Struct, enum e trait

Rust Pattern Matching with match

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

  • Intermedio
  • 3 min di lettura
  • 1 esempio eseguibile
Cosa imparerai
  • 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.

Punti chiave

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

Esempio Rust eseguibile

Rust
Esegui il codice →
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}");
    }
}
Crea un pulsante Run per questo esempio Risultato dell'esecuzione
0: zero
2: small
7: medium
-5: negative
42: large
on the y axis at 8
got 3

Esercitati

Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.

Hai finito questa lezione?

Segnala come imparata per tenere traccia dei tuoi progressi.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide