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
foopara corresponder com os outros padrões. - Adicione um novo campo a
Fooe 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
2no segundo braço para uma variável, e veja que, de forma sútil, não funciona. Mude paraconste veja funcionando novamente.