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编译器通常不会立即报告所有错误;通常,修复错误会导致其他错误开始出现。尝试找出如何修复新错误,如果您仍然无法解决,请。