Z
ZHANK
编程在线教程Rust 教程枚举与模式匹配
复合类型

枚举与模式匹配

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> 显式表达"可能有值"。编译器强制你处理两种情况。