Rust 枚举
1. 枚举 (Enums)
枚举(Enum,“enumeration”的缩写)是一种定义可能为少数几种不同值之一的类型的方法。
枚举中的每个值都被称为一个变体(variant)。
当您需要表示只能是一组预设选项之一的值时,枚举非常有用——例如星期几、方向,或者像成功和错误这样的结果。
2. 创建枚举
要创建枚举,请使用 enum 关键字,并添加一组由逗号分隔的命名值(变体):
示例
enum Direction {
Up,
Down,
Left,
Right,
}要使用该枚举,请创建一个变量并为其分配其中一个枚举变体(使用 :: 来访问变体):
示例
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let my_direction = Direction::Up;
println!("We are going up!");
}3. 对枚举值进行匹配 (Match)
枚举与 match 语句搭配使用非常出色。您可以根据使用的是哪个变体来执行不同的代码:
示例
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let my_direction = Direction::Left;
match my_direction {
Direction::Up => println!("Going up"),
Direction::Down => println!("Going down"),
Direction::Left => println!("Going left"),
Direction::Right => println!("Going right"),
}
}4. 包含数据的枚举
枚举变体也可以保存数据。当每个变体需要存储额外信息时,这非常有用:
示例
enum LoginStatus {
Success(String),
Error(String),
}
fn main() {
let result1 = LoginStatus::Success(String::from("Welcome, John!"));
let result2 = LoginStatus::Error(String::from("Incorrect password"));
match result1 {
LoginStatus::Success(message) => println!("Success: {}", message),
LoginStatus::Error(message) => println!("Error: {}", message),
}
}5. 为什么使用枚举?
- 将相关联的值分组到一个类型中
- 使您的代码更具可读性和安全性
- 结合
match处理不同的情况分支