構造体(structs)

Like tuples, Struct can also be destructured by matching:

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"),
    }
}
This slide should take about 4 minutes.
  • foo のリテラル値を他のパターンと一致するように変更します。
  • Foo に新しいフィールドを追加し、必要に応じてパターンに変更を加えます。
  • キャプチャと定数式を区別しづらい場合があります。2 つ目のアームの 2 を変数に変更してみて、うまく機能しないことを確認します。これを const に変更して、再び動作することを確認します。