Option

ما قبلاً برخی استفاده‌ها از <Option<T را مشاهده کرده‌ایم. این تایپ یا مقداری از تایپT را ذخیره می‌کند یا هیچ چیزی را ذخیره نمی‌کند. به عنوان مثال، String::find یک <Option<usize را برمی‌گرداند.

fn main() {
    let name = "Löwe 老虎 Léopard Gepardi";
    let mut position: Option<usize> = name.find('é');
    println!("پیدا کردن نوع بازگشتی{position:?}");
    assert_eq!(position.unwrap(), 14);
    position = name.find('Z');
    println!("پیدا کردن نوع بازگشتی{position:?}");
    assert_eq!(position.expect("Character not found"), 0);
}
This slide should take about 10 minutes.
  • Option به‌طور گسترده‌ای استفاده می‌شود و تنها در کتابخانه استاندارد محدود نمی‌شود.
  • unwrap مقدار موجود در یک Option را برمی‌گرداند یا باعث panic می‌شود. expect مشابه است اما پیامی برای خطا می‌پذیرد.
    • می‌توانید در مواجهه با panic None کنید، اما نمی‌توانید به‌طور "تصادفی" فراموش کنید که None بررسی کنید.
    • استفاده از unwrap/expect در همه‌جا هنگام ساخت سریع چیزی رایج است، اما کد تولیدی معمولاً None را به‌شیوه‌ای مناسب‌تر مدیریت می‌کند.
  • بهینه‌سازی niche به این معناست که <Option<T اغلب اندازه‌ای مشابه با T در حافظه دارد.