Combinadores de Option en Rust
Trabajar dentro de un Option en vez de desenvolverlo a cada paso.
fn main() {
let raw: Option<&str> = Some("42");
let doubled = raw
.and_then(|s| s.parse::<i32>().ok())
.map(|n| n * 2)
.filter(|n| *n > 50);
println!("{:?}", doubled);
let missing: Option<i32> = None;
println!("{}", missing.unwrap_or(0));
println!("{}", missing.unwrap_or_else(|| 7 * 6));
println!("{}", missing.unwrap_or_default());
println!("{:?}", raw.or(Some("fallback")));
}
Cómo funciona
maptransforma el valor y dejaNoneen paz.and_thenencadena otra llamada que devuelve Option.unwrap_or_elseprovee un valor solo cuando hace falta.
Palabras clave y builtins usados aquí
NoneOptionSomefni32letstr
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 381
- Tokens
- 152
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 96 segundos.
Paso 2 de 3 en Option; paso 2 de 15 en Manejo de errores.