在 Rust 中,模式(Pattern)是用于匹配和提取复杂数据结构中的数据的表达式。模式匹配常常与 match 表达式结合使用,但也可以在其他地方使用,如 if let 表达式、while let 循环等。

以下是一些常见的模式匹配示例:

1. 解构元组:
fn main() {
    let tuple = (42, "hello");

    // 使用模式匹配解构元组
    match tuple {
        (0, _) => println!("First element is zero"),
        (x, "hello") => println!("Got {} with 'hello'", x),
        _ => println!("No match"),
    }
}

2. 解构结构体:
// 定义一个名为 `Person` 的结构体
struct Person {
    name: String,
    age: u32,
}

fn main() {
    let person = Person {
        name: String::from("Alice"),
        age: 30,
    };

    // 使用模式匹配解构结构体
    match person {
        Person { name, age: 30 } => println!("Person named {} is 30 years old", name),
        Person { name, age } => println!("Person named {} is {} years old", name, age),
    }
}

3. 匹配枚举:
// 定义一个名为 `Shape` 的枚举
enum Shape {
    Circle(f64),
    Rectangle(u32, u32),
}

fn main() {
    let shape = Shape::Rectangle(10, 20);

    // 使用模式匹配匹配枚举
    match shape {
        Shape::Circle(radius) => println!("Circle with radius: {}", radius),
        Shape::Rectangle(width, height) => println!("Rectangle with width {} and height {}", width, height),
    }
}

4. if let 表达式:
fn main() {
    let option = Some(42);

    // 使用 if let 表达式匹配 Option
    if let Some(value) = option {
        println!("Got a value: {}", value);
    } else {
        println!("Got None");
    }
}

这些是一些常见的模式匹配示例,模式匹配在 Rust 中是一种强大的工具,用于处理复杂的数据结构和多种情况。它使得代码更具可读性、清晰性和灵活性。


转载请注明出处:http://www.zyzy.cn/article/detail/6797/Rust