Menu
Coddy logo textTech

Itération mutable

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 12 sur 66.

Parfois, vous devez faire plus que simplement lire les éléments d'un vecteur - vous devez les modifier. Alors que la leçon précédente montrait comment itérer et lire des valeurs, cette leçon vous apprend comment modifier les éléments pendant l'itération en utilisant des références mutables.

Pour modifier des éléments lors de l'itération, vous devez utiliser &mut au lieu de & dans votre boucle for :

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

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

Le &mut numbers crée une référence mutable vers le vecteur, et chaque itération vous donne une référence mutable vers un élément individuel. L'opérateur * (appelé l'opérateur de déréférencement) est utilisé pour accéder à la valeur réelle vers laquelle pointe la référence et la modifier.

Ce modèle est incroyablement utile pour transformer des données sur place. Au lieu de créer un nouveau vecteur avec des valeurs modifiées, vous pouvez mettre à jour efficacement celui qui existe déjà. Le vecteur doit être déclaré comme mut pour que cela fonctionne, puisque vous modifiez son contenu.

Après la boucle ci-dessus, numbers contiendrait [2, 4, 6, 8] - chaque valeur d'origine doublée sur place.

challenge icon

Défi

Facile

Écrivez une fonction add_ten_to_all qui prend un vecteur mutable numbers et ajoute 10 à chaque élément sur place, puis retourne le vecteur modifié.

Utilisez l'itération mutable avec &mut pour modifier chaque élément directement. N'oubliez pas d'utiliser l'opérateur de déréférencement * pour accéder aux valeurs réelles et les modifier.

Paramètres :

  • numbers (Vec<i32>) : Un vecteur mutable d'entiers à modifier

Retourne : Le vecteur modifié avec 10 ajouté à chaque élément (Vec<i32>)

Aide-mémoire

Pour modifier les éléments d'un vecteur pendant l'itération, utilisez des références mutables avec &mut :

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

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

Points clés :

  • &mut numbers crée une référence mutable vers le vecteur
  • Chaque itération fournit une référence mutable vers un élément individuel
  • L'opérateur * (opérateur de déréférencement) accède à la valeur réelle et la modifie
  • Le vecteur doit être déclaré comme mut pour permettre la modification

Ce modèle vous permet de transformer les données en place de manière efficace sans créer de nouveau vecteur.

Essayez vous-même

fn add_ten_to_all(numbers: Vec<i32>) -> Vec<i32> {
    // Écrivez le code ici
}
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 Logic & Flow