在 Rust 中将 Result 转换为 Option 的干净方法
大家好!我刚开始学习 Rust,遇到了一个典型情况:我有一个返回 `Result` 的函数,但后续工作需要 `Option`。例如,我读取一个环境变量:
```rust
use std::env;
fn main() {
let port: Option = env::var("PORT") // Result
.and_then(|s| s.parse()) // Result
.ok(); // ???
}
```
我知道可以使用 `.ok()`,它把 `Result` 转换成 `Option`,丢弃错误。但我觉得这不太干净——我们丢失了错误信息。也许有更符合习惯的方式?
第二个问题:我有一个包含多个 `Result` 的调用链,想在最后阶段把它们转换成 `Option`,同时不丢失错误上下文以便记录日志。如何优雅地实现?
请指教 Rust 社区中干净且被接受的做法。提前感谢!