Menu
Coddy logo textTech

Masquage, partie 2

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

Lorsque vous masquez une variable en Rust, la nouvelle variable est complètement indépendante de l'originale, et elle nécessite sa propre déclaration de mutabilité. Le masquage n'hérite pas de la mutabilité de la variable d'origine.

let mut mut_val = 7;
// La variable d'origine est mutable
{ 
    let mut_val = 8;
    // C'est une nouvelle variable qui masque la variable mut_val externe
      
    mut_val = 50;
    // Une erreur s'est produite car
    // mut_val n'est pas mutable
}
// Ici, c'est correct 
// mut_val n'est pas gelée dans cette portée
mut_val = 3;

Pour corriger cela, nous pouvons ajouter mut dans la portée interne :

{
	let mut mut_val = 8;
	mut_val = 50;
}
challenge icon

Défi

Débutant

Corrigez le code donné pour qu'il s'exécute sans erreurs.

Aide-mémoire

Lorsqu'on masque une variable en Rust (shadowing), la nouvelle variable est complètement indépendante et nécessite sa propre déclaration de mutabilité. Le masquage n'hérite pas de la mutabilité de la variable d'origine.

let mut mut_val = 7;
// La variable d'origine est mutable
{ 
    let mut_val = 8;
    // Ceci masque le mut_val extérieur mais est immuable
      
    mut_val = 50;
    // Erreur : mut_val n'est pas mutable dans cette portée
}

Pour corriger cela, ajoutez mut à la variable de masquage :

{
    let mut mut_val = 8;
    mut_val = 50; // Maintenant, cela fonctionne
}

Essayez vous-même

fn main() {
    // Corrigez ce code pour qu'il fonctionne
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // Cela provoquera une erreur
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
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