---
title: Loops
localeTitle: الحلقات
---
# الحلقات

داخل الصدأ هناك ثلاثة أنواع من آليات الحلقات المحلية: `loop` ، `while` ، `loop` `for` .

## تكرار لانهائي مع `loop`

في Rust ، ستستمر بنية `loop` تنفيذ كتلة من الشفرة الإعلانية إلى ما لا نهاية (أو حتى تخبرها صراحة بالتوقف).

في ما يلي مثال على برنامج باستخدام `loop` لطباعة الكلمة "مرة أخرى" باستمرار إلى المحطة:

 `fn main() { 
    loop { 
        println!("again!"); 
    } 
 } 
` 

## حلقات شرطية مع `while`

الآلية المذكورة أعلاه ليست مفيدة للغاية ما لم نقدم نوعًا من شروط التوقف `loop` للتحقق منها. لحسن الحظ ، يحتوي Rust على بنية حلقات مدمجة تم استدعائها `while` الاستخدام ، والتي يمكنك استخدامها لتنفيذ كتلة من التعليمات البرمجية بشكل مستمر في حين أن بعض الشرط صحيح.

في ما يلي مثال لبرنامج يستخدم `while` العد التنازلي من 5:

 `fn main() { 
    let mut number = 5; 
 
    while number != 0 { 
        println!("{}", number); 
        number = number - 1; 
    } 
 } 
` 

قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable) .

## متكررة من خلال مجموعة مع `for`

في بعض الحالات ، قد ترغب في التكرار والعمل على عناصر مجموعة (مثل صفيف). بينما يمكن تحقيق ذلك باستخدام `while` حلقة ومتغير مؤشر للوصول إلى كل عنصر، الصدأ يوفر `for` حلقة لجعل هذه العملية أسهل بكثير.

هنا هو برنامج سبيل المثال أن يطبع كل رقم في صفيف إلى المحطة باستخدام `for` :

 `fn main() { 
    let collection = [15, 7, 2, 6, 9]; 
 
    for element in collection.iter() { 
        println!("the value is: {}", element); 
    } 
 } 
` 

قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable) .

مثل الكثير من `.iter()` في C ++ ، ترجع الدالة `.iter()` مكرر إلى `collection` ، والتي يمكن من خلال حلقات للوصول إلى كل `element` . لمزيد من المعلومات ، توجه إلى وثائق Rust حول [تدفق التحكم](https://doc.rust-lang.org/book/second-edition/ch03-05-control-flow.html) .