</>
Plan du cours — 59/66

Pattern matching avancé

Avancé
// Déstructuration imbriquée
match message {
    Message::Deplacer { x: 0, y } => println!("sur l'axe Y : {y}"),
    Message::Deplacer { x, y: 0 } => println!("sur l'axe X : {x}"),
    Message::Couleur(r, _, _) if r > 200 => println!("rouge vif"),
    _ => {}
}

// Liaison avec @
match age {
    n @ 0..=17 => println!("mineur ({n})"),
    n @ 18.. => println!("majeur ({n})"),
}

// Slices
match liste {
    [] => println!("vide"),
    [seul] => println!("un : {seul}"),
    [premier, .., dernier] => println!("{premier} .. {dernier}"),
}

// while let : consommer jusqu'à épuisement
while let Some(top) = pile.pop() { println!("{top}"); }

// matches! : test booléen d'un motif
let est_erreur = matches!(resultat, Err(_));