简单使用
enum Person {
Good,
Bad
}
let p1 = Person::Good;
为枚举成员添加属性
#[derive(Debug)]
enum Person {
Good(String), // 元组的方式描述属性
Bad { name: String }, // 结构体方式描述属性, 可为属性命名
}
fn main() {
let p1 = Person::Good("Jim".to_string());
let p2 = Person::Bad {
name: "Tom".to_string(),
};
match p1 {
// 元组属性名称可自定义化, 但顺序需一致
Person::Good(n) => {
println!("{}, Good person", n);
},
// 结构体形式名称需和定义时一致
Person::Bad {name} => {
println!("{}, Bad person", name);
}
}
// 使用 if let 语法进行枚举类型判断
if let Person::Good(_) = p2 {
println!("Good person");
} else {
println!("Not a good person");
}
}
Rust 在语言层面彻底不允许空值 null 的存在,但无奈null 可以高效地解决少量的问题,为此引入了 Option 枚举类
enum Option<T> {
Some(T),
None,
}
let opt = Option::Some("Hello");
// 在使用前进行判断
if let Option::None = opt {
println!("opt is none!");
return;
}
// 通过 unwrap 获取 Some 内部实际值
println!("{}", opt.unwrap());
// 初始值为空的 Option 必须明确类型
let opt: Option<&str> = Option::None;
// 由于 Option 是 Rust 编译器默认引入的
// 在使用时可以省略 Option:: 直接写 None 或者 Some()
match opt {
Some(value) => println!("{}", value),
None => println!("opt is None"),
}