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
- La firma se vuelve
Result<(), Box<dyn Error>>. - Un
Errimprime la forma Debug y sale con código distinto de cero. - Así llega
?al nivel más alto de un programa.
Palabras clave y builtins usados aquí
BoxErrOkResultStringdynfni32ifletreturnuse
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.
Paso 4 de 4 en Result y el operador ?; paso 7 de 15 en Manejo de errores.