typestar

Reformar errores en Rust

map_err reescribe el error y deja en paz el valor exitoso.

fn read_port(text: &str) -> Result<u16, String> {
    text.trim()
        .parse::<u16>()
        .map_err(|e| format!("bad port {text:?}: {e}"))
}

fn main() {
    match read_port(" 8080 ") {
        Ok(port) => println!("listening on {port}"),
        Err(msg) => println!("{msg}"),
    }
    println!("{:?}", read_port("http"));
    println!("{}", read_port("nope").unwrap_or_default());
}

Cómo funciona

  1. map_err es map para el lado del error.
  2. Así encajas el error de una biblioteca en tu propio tipo.
  3. unwrap_or_default cierra la cadena sin un panic.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
340
Tokens
117
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 70 segundos.

Escribe este fragmento

Paso 3 de 4 en Result y el operador ?; paso 6 de 15 en Manejo de errores.

← Anterior Siguiente →