Avatar ·

如何在 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 中如何做到这一点的示例。谢谢!