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

let / mut

ربط المتغيّرات let / mut

let يربط اسمًا بقيمة، وهي ثابتة (immutable) افتراضيًا في Rust؛ أضِف mut صراحةً لتسمح بتغييرها لاحقًا.

خلافًا لمعظم اللغات، القيم في Rust **ثابتة افتراضيًا** بعد let: أي محاولة لإعادة تعيينها يرفضها المترجم. هذا خيار تصميم متعمّد يقلّل أخطاء التعديل غير المقصود، ويجبرك على التصريح صراحةً بـ mut كلما احتجت التغيير فعليًا.

يمكن أيضًا إعادة استخدام let بنفس الاسم (shadowing) لإنشاء متغيّر جديد بنفس الاسم، حتى بنوع مختلف — هذا يختلف عن mut الذي يبقي نفس النوع والمتغيّر.

الصياغة

let name = value;
let mut name = value;
let name: Type = value;

📄 مثال

let age = 25;        // ثابت، لا يمكن تعديله
let mut score = 0;   // قابل للتعديل
score += 10;

// shadowing: متغيّر جديد بنفس الاسم
let x = "5";
let x: i32 = x.parse().unwrap(); // الآن x عدد صحيح

أهم النقاط

العنصرالوظيفة
let x = vربط ثابت — القيمة لا تتغيّر بعد التهيئة
let mut x = vربط قابل للتعديل صراحةً
let x: T = vتصريح صريح بالنوع بدل الاستنتاج
shadowinglet بنفس الاسم مرة أخرى ينشئ متغيّرًا جديدًا يحجب القديم

💡 نصائح عملية

  • اترك المتغيّرات ثابتة افتراضيًا وأضِف mut فقط عند الحاجة الفعلية — يقلّل الأخطاء ويوضّح النية
  • استخدم shadowing لتحويل النوع (مثل نص إلى رقم) دون الحاجة لاسمين مختلفين

⚠️ أخطاء شائعة

  • محاولة تعديل متغيّر بدون mut — خطأ ترجمة صريح ومقصود من اللغة
  • الخلط بين shadowing (اسم جديد فعليًا) و mut (نفس المتغيّر يتغيّر) — لهما تأثير مختلف على النوع

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار RUST الكامل بالعربي.