The Code Fix

🦀 شرح Rust

المتغيّرات والملكية (Ownership)

المتغيّرات ثابتة افتراضيًا

في 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.