typestar

Entre Option y Result en Rust

Las dos conversiones que vale memorizar: ok_or agrega un error, ok lo descarta.

fn first_word(line: &str) -> Result<&str, &'static str> {
    line.split_whitespace().next().ok_or("empty line")
}

fn main() {
    println!("{:?}", first_word("hello there"));
    println!("{:?}", first_word("   "));

    let parsed: Option<i32> = "12".parse().ok();
    println!("{:?}", parsed);

    let nested: Result<Option<i32>, std::num::ParseIntError> =
        Some("5").map(|s| s.parse()).transpose();
    println!("{:?}", nested);
}

Cómo funciona

  1. ok_or convierte None en el Err que elijas.
  2. ok tira el error y se queda con un Option.
  3. transpose intercambia un Option y un Result anidados.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
407
Tokens
148
Ritmo de tres estrellas
95 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →