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
ok_orconvierteNoneen elErrque elijas.oktira el error y se queda con unOption.transposeintercambia un Option y un Result anidados.
Palabras clave y builtins usados aquí
OptionResultSomefni32letstaticstr
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.
Paso 3 de 3 en Option; paso 3 de 15 en Manejo de errores.