Introduction
Dans ce laboratoire, nous apprenons à utiliser les vérifications de correspondance (match guards) en Rust pour filtrer les branches en fonction de conditions. La vérification de correspondance est ajoutée après le motif et est représentée par le mot clé if suivi d'une condition. La condition de vérification nous permet de raffiner davantage la correspondance des motifs et d'effectuer des vérifications supplémentaires avant d'exécuter la branche correspondante de l'expression match. Cependant, il est important de noter que le compilateur ne considère pas les conditions de vérification lors de la vérification de la couverture des motifs, il est donc nécessaire de s'assurer que tous les motifs sont toujours couverts par l'expression match.
Note : Si le nom de fichier n'est pas spécifié dans le laboratoire, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser
main.rs, le compiler et l'exécuter avecrustc main.rs &&./main.
Vérifications de correspondance
On peut ajouter une vérification de correspondance (match guard) pour filtrer la branche.
#[allow(dead_code)]
enum Temperature {
Celsius(i32),
Fahrenheit(i32),
}
fn main() {
let temperature = Temperature::Celsius(35);
// ^ TODO essayez différentes valeurs pour `temperature`
match temperature {
Temperature::Celsius(t) if t > 30 => println!("{}C est au-dessus de 30 degrés Celsius", t),
// La partie `if condition` ^ est une vérification de correspondance
Temperature::Celsius(t) => println!("{}C est en-dessous de 30 degrés Celsius", t),
Temperature::Fahrenheit(t) if t > 86 => println!("{}F est au-dessus de 86 degrés Fahrenheit", t),
Temperature::Fahrenheit(t) => println!("{}F est en-dessous de 86 degrés Fahrenheit", t),
}
}
Notez que le compilateur ne prendra pas en compte les conditions de vérification de correspondance lors de la vérification si tous les motifs sont couverts par l'expression match.
fn main() {
let number: u8 = 4;
match number {
i if i == 0 => println!("Zero"),
i if i > 0 => println!("Plus grand que zéro"),
// _ => unreachable!("Ne devrait jamais arriver."),
// TODO ^ décommentez pour corriger la compilation
}
}
Sommaire
Félicitations ! Vous avez terminé le laboratoire sur les vérifications de correspondance. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.