Menu
Coddy logo textTech

Emprunt dans une boucle

Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 67 sur 75.

En Rust, chaque valeur a un propriétaire, et lorsque vous utilisez une valeur dans une boucle, Rust doit savoir si vous voulez l'emprunter (juste la regarder temporairement) ou en prendre possession (la consommer).

Ceci est important car si une boucle prend la propriété de vos données, vous ne pouvez plus utiliser ces données après la fin de la boucle. Comprendre cette distinction est la clé pour écrire correctement des boucles en Rust.

Par exemple, considérons les données suivantes :

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

Méthode 1 : Regarder les données (en utilisant &) :

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

Méthode 2 : Prendre les données (sans &) :

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Cela provoquerait une erreur

Voyez les choses ainsi :

  1. Utiliser & est comme regarder un album photo : vous pouvez voir toutes les photos, mais l'album reste intact
  2. Ne pas utiliser & est comme retirer les photos : vous pouvez les utiliser, mais l'album sera vide après coup

Maintenant ce style :

for num in numbers.iter() {}

Est semblable à ceci :

for num in &numbers {}

Et une boucle de mutation :

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

Peut également être écrit de cette façon :

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

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fundamentals