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 acontecelet 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 é importanteFoo { 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}");}