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 à modifier les éléments pendant l'itération en utilisant des références mutables.

Pour modifier des éléments tout en itérant, 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é opérateur de déréférencement) est utilisé pour accéder et modifier la valeur réelle vers laquelle pointe la référence.

Ce schéma 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, étant donné que vous modifiez son contenu.

Après la boucle ci-dessus, numbers contiendra [2, 4, 6, 8] - chaque valeur d'origine ayant été 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 renvoie 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 values réelles et les modifier.

Paramètres :

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

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

Essayez vous-même

fn add_ten_to_all(mut 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