Structs, enums et traits

Rust Pattern Matching with match

Compare a value against values, ranges, tuples and guards, and let the compiler check you covered everything.

  • Intermédiaire
  • 3 min de lecture
  • 1 exemple exécutable
Ce que vous allez apprendre
  • match arms
  • Ranges, | and guards
  • if let
match n
0"zero"
1 | 2 | 3"small"
4..=9"medium"
_"large"

The first pattern that fits wins

match compares a value with a list of patterns and runs the first one that fits. Patterns can be single values, several values, ranges, tuples, or a name that catches everything else.

1 | 2 | 3 matches any of the three values and 4..=9 matches a range. n if n < 0 is a guard: the pattern matches only when the condition is true. _ catches everything that is left. if let is a short match for a single pattern.

Points clés

  1. 1 | 2 | 3 matches any of the three.
  2. 4..=9 matches a range.
  3. _ catches everything else.

Exemple Rust exécutable

Rust
Exécuter le code →
main.rs
fn classify(n: i32) -> &'static str {
    match n {
        0 => "zero",
        1 | 2 | 3 => "small",
        4..=9 => "medium",
        n if n < 0 => "negative",
        _ => "large",
    }
}

fn main() {
    for n in [0, 2, 7, -5, 42] {
        println!("{n}: {}", classify(n));
    }

    let point = (0, 8);
    match point {
        (0, y) => println!("on the y axis at {y}"),
        (x, 0) => println!("on the x axis at {x}"),
        (x, y) => println!("at ({x}, {y})"),
    }

    let maybe = Some(3);
    if let Some(value) = maybe {
        println!("got {value}");
    }
}
Obtenir un bouton Run pour cet exemple Résultat de l'exécution
0: zero
2: small
7: medium
-5: negative
42: large
on the y axis at 8
got 3

S'entraîner

Ouvrez l'exemple dans le compilateur en ligne, modifiez une valeur ou ajoutez une ligne, et devinez la sortie avant de l'exécuter. Cassez ensuite le code exprès et lisez le message du compilateur.

Leçon terminée ?

Marquez-la comme apprise pour suivre votre progression.

Suivante : Temperature Converter →

S'entraîner avec un défi

Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.

Tous les défis