解構結構體

您也可以解構 struct

struct Foo {
    x: (u32, u32),
    y: u32,
}

#[rustfmt::skip]
fn main() {
    let foo = Foo { x: (1, 2), y: 3 };
    match foo {
        Foo { x: (1, b), y } => println!("x.0 = 1, b = {b}, y = {y}"),
        Foo { y: 2, x: i }   => println!("y = 2, x = {i:?}"),
        Foo { y, .. }        => println!("y = {y}, other fields were ignored"),
    }
}
  • 請變更 foo 中的常值,與其他模式配對。
  • Foo 中新增一個欄位,並視需要變更模式。
  • 捕獲和常數運算式之間的區別可能不容易發現。請嘗試將第二個分支的 2 變更為變數,您會發現它幾乎無法運作。現在將其變更為 const,您會看到它再次運作。