如何在结果上运行函数或默认为值?

Ale*_*ggs 0 idioms rust map-function

我们希望在 a 上运行一个函数,Result或者如果结果实际上是一个错误,则有一个默认值。就像是:

let is_dir = entry.file_type().is_dir() || false
//                 ^--- file_type() returns a Result
//                                         ^--- default to false if Result is an IOError
Run Code Online (Sandbox Code Playgroud)

目前,我们正在这样做:

let is_dir = entry.file_type().map(|t| t.is_dir()).unwrap_or(false);
Run Code Online (Sandbox Code Playgroud)

但这似乎非常令人困惑,对map单个项目结果运行 a 。有更好的方法吗?

kfe*_*v91 5

你可能会更熟悉和适应了map在其常用功能Iterator秒,但使用map与工作ResultS和OptionS还以锈认为习惯。如果你想让你的代码更简洁,你可以map_or像这样使用:

let is_dir = entry.file_type().map_or(false, |t| t.is_dir());
Run Code Online (Sandbox Code Playgroud)