تخطَّ إلى المحتوى

🦀 شرح Rust

Option و Result

الدرس 14 من 25· ⏱ 1 دقائق قراءة

لا يوجد null في Rust

بدلًا منه Option<T>:

enum Option<T> { Some(T), None }

let some = Some(5);
let nothing: Option<i32> = None;

التعامل مع Option

let x: Option<i32> = Some(10);
match x {
    Some(v) => println!("القيمة {v}"),
    None => println!("لا قيمة"),
}

let y = x.unwrap_or(0);   // قيمة افتراضية إن كانت None

Result للأخطاء

enum Result<T, E> { Ok(T), Err(E) }

fn divide(a: f64, b: f64) -> Result<f64, String> {
    if b == 0.0 {
        Err(String::from("القسمة على صفر"))
    } else {
        Ok(a / b)
    }
}

المعالجة

match divide(10.0, 2.0) {
    Ok(v) => println!("الناتج {v}"),
    Err(e) => println!("خطأ: {e}"),
}

💡 إجبار Rust على معالجة None وErr هو ما يجعل برامجها قويّة وآمنة.

🎯 التالي: معالجة الأخطاء.

هل كان هذا الدرس مفيدًا؟