match |
Correspondance |
|---|---|
| Rust | |
Syntaxe
|
match expression { motif1 [if condition1] => expression1, motif2 [if condition2] => expression2, ... _ => expression_par_défaut, } |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet de spécifier la valeur à évaluer et à faire correspondre à un ou plusieurs motifs. |
| motif | Ce paramètre permet de définir un schéma de correspondance (comme une valeur, une structure, un enum,...). |
| condition | Ce paramètre permet d'ajouter une garde conditionnelle pour affiner un motif (optionnel). |
| expression_n | Ce paramètre permet de spécifier l'instruction ou la valeur à exécuter/retourner lorsque le motif est satisfait. |
| _ | Ce paramètre permet d'indiquer un motif par défaut, utilisé lorsque aucun autre motif ne correspond. |
| => | Ce paramètre permet d'associer chaque motif (et éventuellement sa garde) à son bloc d'exécution. |
Description
Ce mot réservé permet de faire correspondre une valeur à des motifs.
Remarques
Permet de contrôler le flux basé sur la correspondance de motifs.
match peut être utilisé pour exécuter du code de manière conditionnelle. Chaque motif doit être traité de manière exhaustive, soit explicitement, soit en utilisant des caractères génériques comme _ dans la correspondance. Puisque match est une expression, des valeurs peuvent également être renvoyées.
- let opt = Option::None::<usize>;
- let x = match opt {
- Some(int) => int,
- None => 10,
- };
- assert_eq!(x, 10);
-
- let a_number = Option::Some(10);
- match a_number {
- Some(x) if x <= 5 => println!("0 à 5 chiffres = {x}"),
- Some(x @ 6..=10) => println!("6 à 10 nombres = {x}"),
- None => panic!(),
- // tous les autres numéros
- _ => panic!(),
- }
match peut être utilisé pour accéder aux membres internes d'une énumération et les utiliser directement.
Dernière mise à jour : Vendredi, le 1er Août 2025