简单使用
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");}
}
Option 枚举类
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"),
}