المتغيّرات ثابتة افتراضيًا
في Rust المتغيّر ثابت ما لم تضف mut:
let name = "براء"; // ثابت
let mut age = 25; // قابل للتغيير
age = 26; // ✅
الأنواع الأساسية
let age: i32 = 25; // عدد صحيح
let price: f64 = 19.99; // عشري
let active: bool = true; // منطقي
let name: &str = "براء"; // نص
الملكية (Ownership) — جوهر Rust
أهم مفهوم: كل قيمة لها مالك واحد، وعند انتهاء المالك تُحرَّر الذاكرة تلقائيًا — بلا garbage collector وبلا تحرير يدوي.
let s1 = String::from("مرحبا");
let s2 = s1; // انتقلت الملكية إلى s2
// println!("{}", s1); // ❌ خطأ! s1 لم تعد صالحة
println!("{}", s2); // ✅
الاستعارة (Borrowing)
للوصول لقيمة دون أخذ ملكيتها، نستعيرها بـ &:
fn print_len(s: &String) {
println!("الطول: {}", s.len());
}
let text = String::from("مرحبا");
print_len(&text); // نعير المرجع
println!("{}", text); // ✅ ما زالت صالحة
لماذا هذا مهم؟
نظام الملكية يمنع أخطاء الذاكرة (تسرّبات، وصول لذاكرة محرّرة) وقت الترجمة، بلا أي تكلفة وقت التشغيل. هذا سرّ تميّز Rust.
🎯 التالي: الدوال والتحكّم والـ structs.