如何打开&结果< _,_>?

时间:2018-05-23 07:21:43

标签: 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`

1 个答案:

答案 0 :(得分:9)

您正在寻找Result::as_ref

  

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

     

制作一个新的Result,其中包含对原作的引用,并保留原文。

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

let entry: &DirEntry = result.as_ref().unwrap();

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