blob: 35ce28db8795727e422e813279cb409df2fe0f3b [file] [log] [blame] [view] [edit]
# structs
Similarly, a `struct` can be destructured as shown:
```rust,editable
fn main() {
struct Foo {
x: (u32, u32),
y: u32,
}
// Try changing the values in the struct to see what happens
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),
// you can destructure structs and rename the variables,
// the order is not important
Foo { y: 2, x: i } => println!("y is 2, i = {:?}", i),
// and you can also ignore some variables:
Foo { y, .. } => println!("y = {}, we don't care about x", y),
// this will give an error: pattern does not mention field `x`
//Foo { y } => println!("y = {}", y);
}
}
```
### See also:
[Structs](../../../custom_types/structs.md), [The ref pattern](../../../scope/borrow/ref.md)