Jos*_*ars 2 types dereference rust
我有一些看起来有点像下面的代码:
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,
};
Run Code Online (Sandbox Code Playgroud)
现在我得到的错误如下:
error: type `usize` cannot be dereferenced
--> src/stripe_connection.rs:127:16
|
127 | Ok(*temp.write(data).unwrap())
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法理解我做错了什么,因为借用/生命周期对我来说仍然是一个新事物.
Fra*_*gné 10
我想你可能会让运算符优先级错误.
*temp.write(data).unwrap()相当于*(temp.write(data).unwrap()),而不是(*temp).write(data).unwrap().您可以编写后者,但这是不必要的,因为编译器将自动取消引用方法调用主题中的指针(即xin x.f(..)).所以你应该在*这里完全删除.
usize没有实现该Deref特征,因此您无法应用*它。write()返回 a Result<usize>,因此当您使用unwrap()它并应用解引用星号时:
*temp.write(data).unwrap()
Run Code Online (Sandbox Code Playgroud)
你正在尝试做
*usize
Run Code Online (Sandbox Code Playgroud)
这是不可能的。