Result
Result
مشابه Option
است، اما موفقیت یا شکست یک عملیات را نشان میدهد، هرکدام با یک نوع متغیر enum متفاوت. این نوع جنریک است: <Result<T, E
که در آن T
در متغیر Ok
استفاده میشود و E
در متغیر Err
ظاهر میشود.
use std::fs::File; use std::io::Read; fn main() { let file: Result<File, std::io::Error> = File::open("diary.txt"); match file { Ok(mut file) => { let mut contents = String::new(); if let Ok(bytes) = file.read_to_string(&mut contents) { println!("دفتر خاطرات عزیز: {contents} ({bytes} bytes)"); } else { println!("نمیتوان محتوای فایل را خواند"); } } Err(err) => { println!("دفتر خاطرات باز نشد: {err}"); } } }
This slide should take about 5 minutes.
- همانند
Option
، مقدار موفقیتآمیز درونResult
قرار دارد و توسعهدهنده را ملزم به استخراج صریح آن میکند. این به بررسی خطاها تشویق میکند. در صورتی که خطا هرگز نباید رخ دهد، میتوان از()unwrap
یا()expect
استفاده کرد که این نیز نشاندهنده نیت توسعهدهنده است. - مستندات
Result
مطالعهای توصیهشده است. نه در طول دوره، اما ذکر آن ارزشمند است. این مستندات شامل بسیاری از متدها و توابع کاربردی است که به برنامهنویسی به استایل تابعمحور کمک میکند. Result
نوع استاندارد برای پیادهسازی مدیریت خطاها است که در روز چهارم دوره خواهیم دید.