English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الدورات في Rust

إضافة إلى بنية الشروط المرونة في Rust، يتمتع بنية التكرار أيضًا بالتصميم المتقدم. يجب أن يشعر المطورون ذوو الخبرة بذلك.

دالة while

دالة while هي بنية التكرار التي تعتمد على الشروط الأكثر شيوعًا:

fn main() {
    let mut number = 1; 
    while number != 4 { 
        println!("{}", number); 
        number += 1; 
    } 
    println!("EXIT"); 
}

نتيجة التنفيذ:

1
2
3
EXIT

لا تزال لغة Rust تستخدم do-while حتى تاريخ كتابة هذا الدليل، ولكن تم تحديد do ككلمة محفوظة، قد يتم استخدامها في إصدارات مستقبلية.

في لغة C، تستخدم دالة for لتشغيل بنية التكرار الثلاثية، ولكن في Rust لا يوجد استخدام لهذا النوع، ويجب استبداله بدالة while:

لغة C

int i; 
for (i = 0; i < 10; i++) { 
    // جسم الدائرة
}

Rust

let mut i = 0; 
while i < 10 { 
    // جسم الدائرة 
    i += 1; 
}

دالة for

دالة for هي بنية التكرار الأكثر استخدامًا، وتستخدم غالبًا لمرور بنية البيانات الخطية (مثل المصفوفة). مرور دالة for عبر المصفوفة:

fn main() { 
     
    for i in a.iter() { 
        println!("القيمة: {}", i); 
    } 
}

نتيجة التنفيذ:

القيمة: 10
القيمة: 20
القيمة: 30
القيمة: 40
القيمة: 50

هذا البرنامج يقوم بتحليل دالة for لتغطية مرور مصفوفة a. a.iter() يمثل مبدأ التكرار (iterator) وليس من الضروري التطرق إليه قبل دراسة الفصول المتعلقة بالأشياء.

fn main() { 
 
     
        println!("a[{}] = {} 
    } 
}

نتيجة التنفيذ:

a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50

دورة loop

بالطبع، قد يواجه المطورون ذوو الخبرة هذا النوع من الحالات عدة مرات: لا يمكن تحديد ما إذا كان يجب استمرار الدورة في البداية والنهاية، وينبغي التحكم في دورة في مكان ما داخل الجسم. إذا واجهت هذا النوع من الحالة، فغالبًا ما نقوم بتنفيذ عملية الخروج من الدورة في جسم while (true).

يحتوي لغة Rust على بنية دورة غير محدودة مدمجة - loop:

fn main() { 
    let s = ['R', 'U', 'N', 'O', 'O', 'B']; 
    let mut i = 0; 
    loop { 
        let ch = s[i]; 
        if ch == 'O' { 
            break; 
        } 
        println!("'{}'", ch);
        i += 1; 
    } 
}

نتيجة التنفيذ:

'R' 
'U' 
'N'

يمكن للدورات التي تعتمد على loop الخروج باستخدام كلمة المفتاح break بشكل مشابه لـ return لخروج الدورة بأكملها وإعطاء قيمة عودة للخارج. هذا تصميم ذكي، لأن الدورات التي تعتمد على loop غالبًا ما تستخدم كأدوات بحث، وإذا تم العثور على شيء ما، فبالطبع يجب تقديم النتيجة:

fn main() { 
    let s = ['R', 'U', 'N', 'O', 'O', 'B']; 
    let mut i = 0; 
    let location = loop { 
        let ch = s[i];
        if ch == 'O' { 
            break i; 
        } 
        i += 1; 
    }; 
    println!("موقع 'O' هو {}", location); 
}

نتيجة التنفيذ:

 موقع 'O' هو 3