枚举与模式匹配
enum 定义、match 匹配、Option<T> 内嵌枚举、模式解构
枚举与模式匹配
Rust 的枚举(enum)极其强大——每个成员可以携带不同类型的数据。配合 match 形成 Rust 最强大的控制流结构。
学完本章你将: 掌握 enum 定义与数据承载、match 匹配、Option
枚举定义
rust
enum IpAddr {
V4(u8, u8, u8, u8), // 携带数据
V6(String),
}
enum Message {
Quit, // 无数据
Move { x: i32, y: i32 }, // 匿名结构体
Write(String), // 字符串
ChangeColor(i32, i32, i32), // 元组
}
fn main() {
let home = IpAddr::V4(127, 0, 0, 1);
let loopback = IpAddr::V6(String::from("::1"));
}
Option —— 内置枚举
rust
// 标准库定义:
// enum Option<T> {
// Some(T),
// None,
// }
fn divide(a: f64, b: f64) -> Option<f64> {
if b == 0.0 {
None
} else {
Some(a / b)
}
}
let result = divide(10.0, 2.0);
match result {
Some(x) => println!("结果: {}", x),
None => println!("除数不能为零"),
}
💡 Rust 没有 null——用
Option<T>显式表达"可能有值"。编译器强制你处理两种情况。