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
در حافظه دارد.