Structs, enums y traits
Rust Pattern Matching with match
Compare a value against values, ranges, tuples and guards, and let the compiler check you covered everything.
Lo que aprenderás
- 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.
Puntos clave
- 1 | 2 | 3 matches any of the three.
- 4..=9 matches a range.
- _ catches everything else.
Ejemplo ejecutable de Rust
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}");
}
}
0: zero
2: small
7: medium
-5: negative
42: large
on the y axis at 8
got 3Practica
Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.
¿Terminaste esta lección?
Márcala como aprendida para seguir tu progreso.
Tu progreso está guardado en este navegador Inicia sesión para conservarlo en todos tus dispositivos.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. Fácil
- Point Quadrant Find which quadrant a point lies in. Fácil