23.Rust枚举类
#[derive(Debug)]
enum Book {
Papery, Electronic
}
fn main() {
let book = Book::Papery;
println!("{:?}", book);
}
也可以为枚举成员添加元组属性描述
enum Book {
Papery(u32),
Electronic(String),
}
如果你想为属性命名,可以用结构体语法:
enum Book {
Papery { index: u32 },
Electronic { url: String },
}
let book = Book::Papery{index: 1001};
虽然可以如此命名,但请注意,并不能像访问结构体字段一样访问枚举类绑定
的属性。访问的方法在 match 语法中。
match语法
枚举的目的是对某一类事物的分类,分类的目的是为了对不同的情况进行描述。
基于这个原理,往往枚举类最终都会被分支结构处理
(许多语言中的 switch )。 switch 语法很经典,但在 Rust 中并不支持,
很多语言摒弃 switch 的原因都是因为 switch 容易存在因忘记添加 break
而产生的串接运行问题,Java 和 C# 这类语言通过安全检查杜绝这种情况出现。
Rust 通过 match 语句来实现分支结构。
先认识一下如何用 match 处理枚举类:
fn main() {
enum Book {
Papery {