typestar

El operador ? en Rust

? devuelve el error temprano, y el camino feliz se lee como una línea recta.

fn sum_of(a: &str, b: &str, c: &str) -> Result<i32, std::num::ParseIntError> {
    let total = a.parse::<i32>()? + b.parse::<i32>()? + c.parse::<i32>()?;
    Ok(total)
}

fn middle(line: &str) -> Option<char> {
    let word = line.split(' ').nth(1)?;
    let mid = word.len() / 2;
    word.chars().nth(mid)
}

fn main() {
    println!("{:?}", sum_of("1", "2", "3"));
    println!("{}", sum_of("1", "two", "3").is_err());
    println!("{:?}", middle("the quick fox"));
}

Cómo funciona

  1. Funciona en cualquier función que devuelva Result u Option.
  2. Ante Err retorna de inmediato, convirtiendo el tipo de error.
  3. Encadenar varias llamadas no necesita ningún match.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
437
Tokens
194
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 2 de 4 en Result y el operador ?; paso 5 de 15 en Manejo de errores.

← Anterior Siguiente →