Structs

Como tuplas, structs tambĂ©m podem ser desestruturados por meio de correspondĂȘncia:

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}, outros campos foram ignorados"),
    }
}
This slide should take about 4 minutes.
  • Modifique os valores em foo para corresponder com os outros padrĂ”es.
  • Adicione um novo campo a Foo e faça mudanças nos padrĂ”es conforme necessĂĄrio.
  • A diferença entre uma captura (capture) e uma expressĂŁo constante pode ser difĂ­cil de perceber. Tente modificar o 2 no segundo braço para uma variĂĄvel, e veja que, de forma sĂștil, nĂŁo funciona. Mude para const e veja funcionando novamente.