ساختارها
مانند tuple ها، ساختار را نیز می توان با تطبیق تخریب کرد:
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} ، سایر فیلدها نادیده گرفته شدند"), } }
This slide should take about 4 minutes.
- تغییر مقادیر لیترال در foo برای مطابقت با سایر الگوها.
- اضافه کردن یک فیلد جدید به Foo و ایجاد تغییرات مورد نیاز.
- تشخیص تفاوت بین یک گرفتن متغییر و یک عبارت ثابت میتواند دشوار باشد. سعی کنید
2
را در شاخه دوم به یک متغیر تغییر دهید و خواهید دید که کار نمیکند. آن را به یکconst
تغییر دهید و خواهید دید که دوباره کار میکند.