根据问题,假设我有以下代码:
我有漏掉什么或者是我误解了自动取值和取值引用强制转换吗?
struct Test {
x: i32
}
fn main() {
let test1 = Test { x: 32 }; // type inference by vscode: Test
let test2 = &test1 // type inference by vscode: &Test
let test3 = &test2 // type inference by vscode: &&Test
let explicit_ref: &Test = &test3; // This should give an error but works as I haven't implemented
//Deref trait.
}
我有漏掉什么或者是我误解了自动取值和取值引用强制转换吗?
Test
实现Deref
,但是仍然有一个针对任何&T
的通用Deref<Target = T>
实现。因此,&&T
可以被强制转换为&T
。 - cameron1024Deref
实现(相反-它使用内置的&T
解引用,仅适用于泛型)。 - Chayim Friedman<&T as Deref> :: deref(&self)->&T
](https://doc.rust-lang.org/src/core/ops/deref.rs.html#80-87)。 - eggyal