typestar

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

  1. El if después de un patrón es el guard, probado solo si hay coincidencia.
  2. n @ 1..=9 vincula el valor y verifica el rango.
  3. | une patrones alternativos en una misma rama.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Coincidencia de patrones; paso 21 de 39 en Fundamentos del lenguaje.

← Anterior Siguiente →