主题
枚举
enum 表示一组互斥变体,变体可以无数据、像元组一样带数据,或像结构体一样命名字段。
rust
enum Status {
Idle,
Running { job_id: u64 },
Failed(String),
}带数据的枚举适合状态机、协议消息和错误形状。用 match 或 if let 解构变体;match 必须穷尽。
rust
fn label(status: Status) -> String {
match status {
Status::Idle => "idle".into(),
Status::Running { job_id } => format!("job {job_id}"),
Status::Failed(msg) => msg,
}
}Option
Option<T> 是标准库枚举:Some(T) 或 None,用来表示缺失,而不是哨兵值或空指针。
rust
fn find(id: u64) -> Option<User> {
users.into_iter().find(|u| u.id == id)
}unwrap() / expect() 在 None 时 panic,只适合不变量被破坏的路径。库代码把 None 向上传,或转成 Result。
Result<T, E> 同样是枚举,表示可恢复失败。
