【Rust Course】读书笔记-全模式匹配

43 阅读1分钟

提问

模式匹配有多少种方式

回答

  1. 字面值pip
let x = 1;

match x {
    1 => println!("one"),
    2 => println!("two"),
    3 => println!("three"),
    _ => println!("anything"),
}

  1. 匹配枚举
fn main() {
    let x = Some(5);
    let y = 10;

    match x {
        Some(50) => println!("Got 50"),
        Some(y) => println!("Matched, y = {:?}", y),
        _ => println!("Default case, x = {:?}", x),
    }

    println!("at the end: x = {:?}, y = {:?}", x, y);
}
  1. 匹配多个选项
let x = 1;

match x {
    1 | 2 => println!("one or two"),
    3 => println!("three"),
    _ => println!("anything"),
}

  1. 匹配范围
let x = 5;

match x {
    1..=5 => println!("one through five"),
    _ => println!("something else"),
}

  1. 匹配结构体中字段
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let p = Point { x: 0, y: 7 };

    let Point { x: a, y: b } = p;
    assert_eq!(0, a);
    assert_eq!(7, b);
}

参考

全模式列表 - Rust语言圣经(Rust Course)