枚举 Enum
enum 用于表示“一个值可能是几种情况之一”。Rust enum 比 C 语言 enum 更强,因为每个变体可以携带不同数据。
基本 enum
src/main.rs
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let dir = Direction::Up;
}
携带数据
src/main.rs
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
}
不同变体可以携带不同类型的数据。
Option
Rust 没有空指针常规用法,而是用 Option<T> 表示“可能有值,也可能没有值”:
enum Option<T> {
Some(T),
None,
}
示例:
let value: Option<i32> = Some(10);
let empty: Option<i32> = None;
Result
Result<T, E> 表示“成功或失败”:
enum Result<T, E> {
Ok(T),
Err(E),
}
很多 I/O、网络和解析函数都会返回 Result。
小结
你需要掌握:
- enum 表示多种可能状态。
- enum 变体可以携带数据。
Option<T>表示可能没有值。Result<T, E>表示可能失败。- enum 通常配合
match使用。