Rust 中将列举所有可选的值定义为一个枚举类型。
概念
定义
enum 枚举类型名 {
值1,
值2,
}
访问
枚举类型名::值1;
,如:let name = CityKind::sh;
- 枚举的变体都位于标识符的命名空间下,使用
::
进行访问
枚举方法
使用 impl
关键字为枚举定义方法。
示例
#[derive(Debug)]
enum Sex {
Man,
Woman,
}
impl Sex {
fn print(&self) {
println!("{:?}", self); // () ?
}
}
struct Student {
name: String,
sex: Sex,
}
fn print(sex: Sex) {
println!("{:?}", sex);
}
fn main() {
print(Sex::Man);
let woman = Sex::Woman;
print(woman);
let stu = Student{
name: String::from("xiaoming"),
sex: Sex::Man,
};
println!("name: {}, sex: {:?}", stu.name, stu.sex.print())
}
数据附加到枚举的变体中
定义
enum 枚举类型名 {
值1(类型、结构体或枚举等),
值2(类型或结构体),
}
优点:
- 不需要额外使用 struct 就能存储值
- 每个变体可以拥有不同的类型和关联的数据量
示例:
enum Sex {
Man(String),
Woman(String),
}
let man = Sex::Man("man");
pub enum
enum 默认为私有的,可以使用 pub
关键字定义公有枚举:
pub enum 枚举类型名 {
值1(类型、结构体或枚举等),
值2(类型或结构体),
}
说明:
- pub enum 所有的变体都是公共的,与 Rust 其私有规则有所不同