Rust中的枚举
枚举的基本概念
枚举(enumerations),也被称作 enums。
枚举允许你通过列举可能的 成员(variants) 来定义一个类型。
首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option
,它代表一个值要么是某个值要么什么都不是。
简单来讲,枚举就是一种类型,这种类型中可包含多个值,但是在实际去使用枚举的时候只能使用这么多个值中的其中一个。
比如,性别就可以是一种枚举类型,性别的值只能是男或者女(那种不伦不类的就算了,这里不谈)。当你去使用性别这种枚举的时候,要么是男,要么是女,不可能两个都取,也不可能一个都不取。
Rust中的枚举的基本用法:
- 声明
enum 枚举名 {
枚举值1, //可指定类型也可不指定类型
枚举值2,
...
枚举值n,
}
最后一个枚举值后面的逗号有没有都不影响,但是官网一般都会加上这个逗号,编译器中格式化代码之后也会自动加。
- 使用
//未指定枚举值的类型
let 变量名 = 枚举名::枚举值名;
//指定枚举值的类型
let 变量名 = 枚举名::枚举值名(枚举值的实际值)
使用枚举的注意事项:在Rust中枚举不能直接通过if表达式来比较,一般使用match
类模式匹配
例子:
enum Sex {
//定义了性别的枚举类型
MAN,
WOMAN,
}
struct Person {
//定义了人的结构体类型
name: String,
sex: Sex,
}
impl Person {
//实现人的info方法
fn info(&self) {
println!("name: {}", self.name);
match self.sex {
//通过模式匹配,不能使用if表达式
Sex::MAN => println!("sex: 男"),
Sex::WOMAN => println!("sex: 女"),
}
}
}
fn main() {
let jack = Person {
name: String::from("Jack"),
sex: Sex::MAN,
};
jack.info();
}
结果&#x