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

🦀 شرح Rust

أعمار القيم (Lifetimes)

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

لماذا الأعمار؟

تضمن أن المرجع لا يعيش أطول من القيمة التي يشير إليها — فتمنع المراجع المعلّقة (dangling) وقت الترجمة.

الصيغة 'a

عند إرجاع مرجع من دالة بمعاملات مرجعية، يطلب Rust توضيح العلاقة:

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() { x } else { y }
}

'a تقول: المرجع المُعاد يعيش بقدر أقصر المدخلين.

غالبًا تُستنتج تلقائيًّا

في معظم الكود لا تكتب الأعمار يدويًّا — المترجم يستنتجها. تظهر فقط عند الغموض.

في الهياكل

struct Excerpt<'a> {
    part: &'a str,
}

يعني أن الهيكل لا يعيش أطول من النصّ الذي يشير إليه.

💡 الأعمار مفهوم متقدّم، لكنها سبب آخر يجعل Rust آمنًا تمامًا للذاكرة دون GC.

🎯 التالي: الإغلاقات والمكرّرات.

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