从&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`
答案 0 :(得分:9)
您正在寻找Result::as_ref
:
从
Result<T, E>
转换为Result<&T, &E>
。制作一个新的
Result
,其中包含对原作的引用,并保留原文。
以下代码解决了您的问题:
let entry: &DirEntry = result.as_ref().unwrap();
对于可变版本,提供了Result::as_mut
。