typestar

Devolver Result desde main en Rust

main puede devolver un Result, y el runtime reporta el error por ti.

use std::error::Error;

fn checked_div(a: i32, b: i32) -> Result<i32, String> {
    if b == 0 {
        return Err("divide by zero".to_string());
    }
    Ok(a / b)
}

fn main() -> Result<(), Box<dyn Error>> {
    let value = checked_div(84, 2)?;
    println!("{value}");

    let total: i32 = "21".parse()?;
    println!("{}", total * 2);
    Ok(())
}

Cómo funciona

  1. La firma se vuelve Result<(), Box<dyn Error>>.
  2. Un Err imprime la forma Debug y sale con código distinto de cero.
  3. Así llega ? al nivel más alto de un programa.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
313
Tokens
118
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →