Avatar ·

ماذا تعني المعرفات ذات علامة الاقتباس المفردة (') في Rust؟

مرحبًا! بدأت تعلم Rust مؤخرًا وأواجه باستمرار في كود الآخرين معرفات غريبة تبدأ بعلامة اقتباس مفردة، مثل `'a` و `'static` و `'b`. في البداية ظننت أنها ماكرو أو متغيرات خاصة، لكن لاحظت أنها تظهر كثيرًا في تصريحات الدوال والهياكل. هذا مثال وجدته في التوثيق: ```rust fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } } ``` ما هو `'a`؟ لماذا هو موجود داخل الأقواس الزاوية بعد اسم الدالة؟ أفهم أنه مرتبط بـ lifetime (زمن الحياة)، لكن لا أستطيع فهم كيف يعمل. في لغات أخرى مثل C++ أو Java، لم أرَ شيئًا كهذا. اشرح لي، من فضلك، بكلمات بسيطة، ما هذه الكائنات ولماذا نحتاجها. خاصة أن `'static` يربكني — يظهر كثيرًا في النصوص الحرفية والثوابت. سأكون ممتنًا لشرح واضح مع أمثلة، لأنه حتى الآن يبدو لي هذا كالسحر.