如何在 Rust 中将 Option 转换为 Result 而不使用宏?
大家好。我正在学习 Rust,遇到了将 `Option` 转换为 `Result` 的问题。在我的代码中,经常出现从某个函数(例如迭代器或哈希映射)获取 `Option`,但我需要返回 `Result` 以便将缺失值作为错误处理的情况。
目前我通过 match 或 if let 来实现,但这看起来很冗长。例如:
```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()),
}
}
```
我知道可以编写宏,但我想知道:是否有内置的方法可以在不编写自定义宏的情况下做到这一点?标准库中是否有类似 `option_to_result()` 的东西?或者,也许有像 `.unwrap_or_else()` 这样返回 `Result` 的方法?
希望能看到一些在 idiomatic Rust 中如何做到这一点的示例。谢谢!