如何打开&Result <_,_>?

Pri*_*six 5 rust

&Result类型中提取数据的好方法是什么?

在我的具体情况下,我有一个&Result<DirEntry, Error>类型,我无法解开因为我没有拥有该对象.我尝试取消引用并克隆它(*left_item).clone(),但这只是给我一个错误的注释:

the method `clone` exists but the following trait bounds were not satisfied:
`std::result::Result<std::fs::DirEntry, std::io::Error> : std::clone::Clone`
Run Code Online (Sandbox Code Playgroud)

Tim*_*ann 9

您正在寻找Result::as_ref:

转换Result<T, E>Result<&T, &E>.

生成一个新的Result,包含对原始的引用,留下原始的到位.

以下代码解决了您的问题:

let entry: &DirEntry = result.as_ref().unwrap();
Run Code Online (Sandbox Code Playgroud)

对于可变版本,Result::as_mut提供.