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را بهشیوهای مناسبتر مدیریت میکند.
- میتوانید در مواجهه با panic
- بهینهسازی niche به این معناست که
<Option<Tاغلب اندازهای مشابه باTدر حافظه دارد.