Estruturas

De maneira semelhante, uma struct pode ser desestruturada como mostrada:

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

    // Experimente mudar os valores na estrutura para veres o que acontece
    let foo = Foo { x: (1, 2), y: 3 };

    match foo {
        Foo { x: (1, b), y } => println!("First of x is 1, b = {},  y = {} ", b, y),

        // nós podemos desestruturar as estruturas e renomear as variáveis,
        // a ordem não é importante
        Foo { y: 2, x: i } => println!("y is 2, i = {:?}", i),

        // e também podemos ignorar algumas variáveis:
        Foo { y, .. } => println!("y = {}, we don't care about x", y),
        // isto dará um erro: o padrão não menciona o campo `x`
        //Foo { y } => println!("y = {}", y),
    }

    let faa = Foo { x: (1, 2), y: 3 };

    // Nós não precisamos dum bloco de correspondência para
    // desestruturar as estruturas:
    let Foo { x : x0, y: y0 } = faa;
    println!("Outside: x0 = {x0:?}, y0 = {y0}");
}

Consulte também:

Estruturas