Types 无法取消对“usize”类型的引用

Types 无法取消对“usize”类型的引用,types,rust,dereference,Types,Rust,Dereference,我有一些代码看起来有点像如下: let incoming: Vec<u8> = Vec::new(); match some_function(|data| { let temp = &mut incoming; Ok(*temp.write(data).unwrap()) }) { Ok(v) => v, Err(err) => return false, }; 出于某种原因,我无法理解我做错了什么,因为借用/生命周期对我来说

我有一些代码看起来有点像如下:

let incoming: Vec<u8> = Vec::new();

match some_function(|data| {
    let temp = &mut incoming;
    Ok(*temp.write(data).unwrap())
}) {
    Ok(v) => v,
    Err(err) => return false,
};
出于某种原因,我无法理解我做错了什么,因为借用/生命周期对我来说还是很新的。

没有实现这个特性,所以你不能对它应用
*
write()
返回一个
结果
,因此当您
展开它并应用取消引用星号时:

*temp.write(data).unwrap()
您正在尝试这样做

*usize

这是不可能的。

我想您可能弄错了运算符优先级


*临时写入(数据).unwrap()
相当于
*(临时写入(数据).unwrap())
,而不是
(*临时写入(数据).unwrap()
)。您可以编写后者,但这是不必要的,因为编译器将自动取消引用方法调用主题中的指针(即
x.f(..)
中的
x
)。因此,您应该在此处完全删除
*

我更新了我的问题,因为我尝试删除
*
,但这会导致另一个错误。Rust编译器通常不会立即报告所有错误;通常,修复错误会导致其他错误开始出现。尝试找出如何修复新错误,如果您仍然无法解决,请。