0Pricing
Learn Rust Coding · درس

تعليقات أعمار الاقتراض

تسمية أعمار الاقتراض

تعليقات أعمار الاقتراض درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

تسمية مدة عمرية

تعليق المدة العمرية هو اسم يبدأ بعلامة اقتباس مفردة، مثل 'a. وهو لا يغير مدة بقاء أي شيء؛ بل يصف العلاقات بين المدد العمرية للمراجع.

مواضع التعليقات

تعلن معاملات المدة العمرية بين قوسين زاويين بعد اسم الدالة، ثم تستخدمها مع أنواع المراجع، تمامًا كما تفعل مع معاملات الأنواع العامة.

الصياغة: fn name<'a>(x: &'a T) -> &'a T.

الدالة الكلاسيكية longest

تحتاج الدالة التي تُرجع إحدى مرجعيتين إلى تعليق. وتوضح 'a أن النتيجة تظل صالحة بقدر مدة صلاحية المُدخل الأقصر.

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

fn main() {
    let a = String::from("long string");
    let b = String::from("short");
    println!("{}", longest(&a, &b));
}

معنى 'a هنا

يخبر التعليق المصرّف بأن المرجعية المُرجعة لا تكون صالحة إلا ما دام كلا المُدخلين صالحين. ثم يتحقق المصرّف من كل موضع استدعاء وفقًا لهذا العقد.

سبب الحاجة إليه

من دون التعليق، لا يستطيع المصرّف معرفة ما إذا كانت القيمة المُرجعة تستعير من x أم من y. ويربط اسم المدة العمرية بينهما، لكي يتمكن فاحص الاستعارة من تحليل النتيجة.

مدد عمرية مختلفة

عندما تكون المراجع غير مرتبطة، امنحها أسماء مدد عمرية مختلفة. هنا لا تُرجع إلا x، لذلك تهم مدته العمرية وحدها بالنسبة إلى النتيجة.

fn first<'a, 'b>(x: &'a str, _y: &'b str) -> &'a str {
    x
}

fn main() {
    let a = String::from("keep me");
    let b = String::from("ignore");
    println!("{}", first(&a, &b));
}

المدد العمرية لا تطيل مدة الحياة

لا تجعل التعليقات البيانات حية مدة أطول. فهي تذكر فقط القيود التي يجب على المصرّف التحقق منها. وإذا انتهت حياة قيمة مبكرًا، فلن تُترجم التعليمات البرمجية مهما كانت التعليقات.

استدعاء صالح

ما دام المُدخلان يظلان صالحين إلى أن ينتهي استخدام النتيجة، يُقبل الاستدعاء. هنا يظل النصان موجودين حتى الطباعة، لذا كل شيء سليم.

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

fn main() {
    let a = String::from("abcdef");
    let result;
    {
        let b = String::from("xy");
        result = longest(&a, &b);
        println!("chosen: {}", result);
    }
}

المدد العمرية مع الأنواع العامة

يمكن أن تظهر معاملات المدد العمرية والأنواع معًا. وتُدرج المدد العمرية أولًا داخل القوسين الزاويين.

use std::fmt::Display;

fn announce<'a, T: Display>(text: &'a str, value: T) -> &'a str {
    println!("value is {}", value);
    text
}

fn main() {
    let msg = String::from("hello");
    println!("{}", announce(&msg, 42));
}

المدة العمرية 'static

'static مدة عمرية خاصة تعني أن المرجعية يمكن أن تظل صالحة طوال مدة البرنامج. وتملك الثوابت النصية هذه المدة لأنها مضمّنة داخل الملف الثنائي.

fn motto() -> &'static str {
    "fearless concurrency"
}

fn main() {
    println!("{}", motto());
}

قراءة التعليقات

اقرأ &'a str على أنه مرجعية نصية صالحة طوال المدة العمرية 'a. وعندما يشترك معاملان في 'a، يربط المصرّف مدتيهما بالمدة الأقصر عند كل استدعاء.

تحقق سريع

اختبر مدى فهمك لتعليقات المدد العمرية.

مراجعة

لقد تعلمت تسمية المدد العمرية:

  • تستخدم المدد العمرية أسماءً مثل 'a، وتُعلن بين قوسين زاويين
  • تعبّر الأسماء المشتركة عن ارتباط المراجع، مثل ارتباط النتيجة بالمُدخلات
  • تصف التعليقات المدد العمرية ولا تطيلها
  • تعني 'static أن المرجعية صالحة طوال البرنامج

الأسئلة الشائعة

هل درس «تعليقات أعمار الاقتراض» مجاني؟

نعم — نص درس «تعليقات أعمار الاقتراض» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ماذا ستتعلم في «تعليقات أعمار الاقتراض»؟

تسمية أعمار الاقتراض تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟

لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «تعليقات أعمار الاقتراض»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟

نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا نستخدم أعمار الاقتراض
  2. تعليقات أعمار الاقتراض
  3. أعمار الاقتراض في Structs
  4. قواعد الحذف
← العودة إلى Learn Rust Coding