الگو‌ها و ضدِ ساختارها

هنگام کار با تاپل ها و سایر مقادیر ساختاریافته، معمول است که بخواهید مقادیر داخلی را در متغیرهای محلی استخراج کنید. این را می توان به صورت دستی با دسترسی مستقیم به مقادیر داخلی انجام داد:

fn print_tuple(tuple: (i32, i32)) {
    let left = tuple.0;
    let right = tuple.1;
    println!("left: {left}, right: {right}");
}

با این حال، Rust همچنین از استفاده از تطبیق الگو برای تخریب یک مقدار بزرگتر در بخش های تشکیل دهنده آن پشتیبانی می کند:

fn print_tuple(tuple: (i32, i32)) {
    let (left, right) = tuple;
    println!("left: {left}, right: {right}");
}
This slide should take about 5 minutes.
  • الگوهای استفاده شده در اینجا "irrefutable" هستند، به این معنی که کامپایلر می تواند به طور ایستا تأیید کند که مقدار سمت راست = ساختاری مشابه الگو دارد.
  • نام متغیر یک الگوی انکارناپذیر است که همیشه با هر مقداری مطابقت دارد، از این رو می‌توانیم از «let» برای اعلام یک متغیر استفاده کنیم.
  • Rust همچنین از استفاده از الگوها در شرطی‌ها پشتیبانی می‌کند و امکان مقایسه برابری و تخریب ساختار را در همان زمان فراهم می‌کند. این شکل از تطبیق الگو بعداً با جزئیات بیشتری مورد بحث قرار خواهد گرفت.
  • مثال‌های بالا را ویرایش کنید تا خطای کامپایلر در زمانی که الگو با مقدار مطابقت‌شده مطابقت ندارد نشان داده شود.