枚举与模式匹配
用 enum + match 穷尽处理分支
本节你将能
定义枚举,并用 match 做穷尽分支处理。
直觉模型
枚举是「同一概念的多种形态」;match 强迫你盖住每一种形态,少漏一个分支就编不过。
核心要点
- 变体可携带数据:
Message::Move { x, y } match必须穷尽;也可用if let处理单分支_通配剩余情况,但别滥用掩盖真正该处理的变体
enum Msg { Quit, Echo(String), Move { x: i32, y: i32 } }
fn handle(m: Msg) {
match m {
Msg::Quit => {}
Msg::Echo(s) => println!("{s}"),
Msg::Move { x, y } => println!("{x},{y}"),
}
}
常见误区
用一长串布尔标志模拟状态机——枚举通常更清晰、更安全。
动手
为交通灯枚举写 next 方法。
互动
测验:判断 match 是否穷尽。
本节小结
下一节聚焦标准库里最重要的枚举:Option。