Menu
Coddy logo textTech

השאלה בתוך לולאה

חלק מהיחידה יסודות במסלול ה-Rust של Coddy. שיעור 67 מתוך 75.

ב-Rust, לכל ערך יש בעלים, וכשמשתמשים בערך בלולאה, Rust צריכה לדעת אם רוצים לשאול אותו (רק להתבונן בו באופן זמני) או לקחת עליו בעלות (לצרוך אותו).

זה חשוב, כי אם לולאה מקבלת בעלות על הנתונים שלך, לא תוכל עוד להשתמש בהם לאחר שהלולאה מסתיימת. הבנת ההבחנה הזאת היא המפתח לכתיבת לולאות נכונות ב-Rust.

לדוגמה, נבחן את הנתונים הבאים:

let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;

שיטה 1: התבוננות בנתונים (באמצעות &):

for number in &numbers {
    sum += number;
}
println!("I can use it here: {:?}", numbers);

שיטה 2: לקיחת הנתונים (בלי &):

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// זה יגרום לשגיאה

חשבו על זה כך:

  1. שימוש ב־& דומה לעיון באלבום תמונות: אפשר לראות את כל התמונות, אבל האלבום נשאר שלם
  2. אי־שימוש ב־& דומה להוצאת התמונות מהאלבום: אפשר להשתמש בהן, אבל האלבום יהיה ריק לאחר מכן

עכשיו הסגנון הזה:

for num in numbers.iter() {}

דומה לזה:

for num in &numbers {}

ולולאת מוטציה:

for num in numbers.iter_mut() { 
    *num *= 2;
}

אפשר גם לכתוב זאת כך:

for num in &mut numbers { 
    *num *= 2;
}

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Rust אונליין