لماذا الأعمار؟
تضمن أن المرجع لا يعيش أطول من القيمة التي يشير إليها — فتمنع المراجع المعلّقة (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.
🎯 التالي: الإغلاقات والمكرّرات.