typestar

Combinadores de Option en Rust

Trabajar dentro de un Option en vez de desenvolverlo a cada paso.

fn main() {
    let raw: Option<&str> = Some("42");

    let doubled = raw
        .and_then(|s| s.parse::<i32>().ok())
        .map(|n| n * 2)
        .filter(|n| *n > 50);
    println!("{:?}", doubled);

    let missing: Option<i32> = None;
    println!("{}", missing.unwrap_or(0));
    println!("{}", missing.unwrap_or_else(|| 7 * 6));
    println!("{}", missing.unwrap_or_default());
    println!("{:?}", raw.or(Some("fallback")));
}

Cómo funciona

  1. map transforma el valor y deja None en paz.
  2. and_then encadena otra llamada que devuelve Option.
  3. unwrap_or_else provee un valor solo cuando hace falta.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
381
Tokens
152
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 96 segundos.

Escribe este fragmento

Paso 2 de 3 en Option; paso 2 de 15 en Manejo de errores.

← Anterior Siguiente →