Cómo convertir Option en Result en Rust sin usar macros
Hola a todos. Estoy aprendiendo Rust y me encontré con el problema de convertir `Option` en `Result`. A menudo en mi código surge una situación donde obtengo un `Option` de alguna función (por ejemplo, de un iterador o un hash map), pero necesito devolver un `Result` para tratar la ausencia del valor como un error.
Por ahora lo hago con match o if let, pero se ve voluminoso. Por ejemplo:
```rust
fn find_user(id: u32) -> Result {
let users = get_users();
match users.iter().find(|u| u.id == id) {
Some(user) => Ok(user.clone()),
None => Err("User not found".to_string()),
}
}
```
Sé que se puede escribir una macro, pero me pregunto: ¿hay una forma incorporada de hacerlo sin escribir mi propia macro? ¿Hay algo como `option_to_result()` en la biblioteca estándar? ¿O tal vez algún método como `.unwrap_or_else()` que devuelva un `Result`?
Me gustaría ver ejemplos de cómo se hace esto en Rust idiomático. ¡Gracias!
No answers yet.
Inicia sesión para dejar una respuesta