Rust 枚举:穷举罪名
枚举 (Enumerations) 允许你通过列举可能的 成员 (Variants) 来定义一个类型。
🔢 定义枚举
enum Crime {
Murder,
Arson,
Bribery,
}
fn main() {
let current_crime = Crime::Bribery;
}
📦 带数据的枚举
Rust 的枚举非常强大,成员可以携带不同类型的数据。
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
🎲 Option 枚举
Rust 没有 Null!它使用 Option<T> 来表示“可能有值,也可能没值”。
enum Option<T> {
Some(T),
None,
}
fn main() {
let some_number = Some(5);
let absent_number: Option<i32> = None;
}
🧩 match 控制流
match 就像更强大的 switch,必须覆盖所有可能性(穷尽性检查)。
enum Crime {
Murder,
Bribery(u32), // 受贿金额
}
fn judge(c: Crime) {
match c {
Crime::Murder => println!("死刑!"),
Crime::Bribery(amount) => {
println!("受贿 {} 两?充公!", amount);
},
}
}
🤔 if let 语法
如果你只关心一种匹配情况,可以用 if let。
let config_max = Some(3u8);
if let Some(max) = config_max {
println!("最大值是 {}", max);
}