Guards y vinculaciones en match en Rust
Un guard agrega una condición a una rama; @ conserva el valor que coincidió.
fn describe(n: i32) -> String {
match n {
0 => "zero".to_string(),
n @ 1..=9 => format!("single digit {n}"),
n if n % 2 == 0 => format!("even {n}"),
10 | 100 | 1000 => "round".to_string(),
_ => "odd and large".to_string(),
}
}
fn main() {
for n in [0, 7, 42, 100, 33] {
println!("{}", describe(n));
}
}
Cómo funciona
- El
ifdespués de un patrón es el guard, probado solo si hay coincidencia. n @ 1..=9vincula el valor y verifica el rango.|une patrones alternativos en una misma rama.
Palabras clave y builtins usados aquí
Stringfnfori32ifinmatch
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 303
- Tokens
- 117
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 78 segundos.
Paso 3 de 4 en Coincidencia de patrones; paso 21 de 39 en Fundamentos del lenguaje.