解構結構體
您也可以解構 struct
:
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}, other fields were ignored"), } }
- 請變更
foo
中的常值,與其他模式配對。 - 在
Foo
中新增一個欄位,並視需要變更模式。 - 捕獲和常數運算式之間的區別可能不容易發現。請嘗試將第二個分支的
2
變更為變數,您會發現它幾乎無法運作。現在將其變更為const
,您會看到它再次運作。