Avatar ·

在 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 社区中干净且被接受的做法。提前感谢!