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 paraconst
e veja funcionando novamente.