لا يوجد 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هو ما يجعل برامجها قويّة وآمنة.
🎯 التالي: معالجة الأخطاء.