我有一些看起来有点像下面的代码:
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,
};
现在我得到的错误如下:
error: type `usize` cannot be dereferenced
--> src/stripe_connection.rs:127:16
|
127 | Ok(*temp.write(data).unwrap())
出于某种原因,我无法理解我做错了什么,因为借用/生命周期对我来说仍然是一个新事物。
答案 0 :(得分:10)
我认为你可能会误算运营商优先权。
*temp.write(data).unwrap()
相当于*(temp.write(data).unwrap())
,而不是(*temp).write(data).unwrap()
。您可以编写后者,但这是不必要的,因为编译器将自动取消引用方法调用主题中的指针(即x
中的x.f(..)
)。所以你应该在这里完全删除*
。
答案 1 :(得分:3)