在更大的应用程序中,我有许多返回Result<_, _>
的函数。感谢?
我可以轻松地撰写这些内容。不幸的是,我的代码有时自然会导致Option<Result<_, _>>
。拿这个假的例子:
std::env::args().nth(1)
.and_then(|filename| File::open(filename))
为了轻松编写可能失败的函数,我希望Result
处于非常“外层”。当然,match
会有所帮助:
match std::env::args().nth(1) {
Some(filename) => File::open(filename).map(|f| Some(f)),
None => Ok(None),
}
但这写起来相当冗长乏味。我正在寻找一个有助于这种转换的功能。我以某种方式提醒FromIterator<Result<A, E>>
的{{1}} impl - 它还将Result<V, E> where V: FromIterator<A>
拉到外层。
那么实现我想要的最好方法是什么?编写自己的辅助函数或宏也是可以的。