Rust 理解铁锈书中的deref函数

Rust 理解铁锈书中的deref函数,rust,Rust,我正在浏览锈书的部分,我对deref函数有疑问 structmybox(T); 为MyBox执行命令{ 类型目标=T; fn deref(&self)->&self::Target{ &self.0 } } 问题1。如果输入参数(&self)已经是对T的引用,为什么在访问函数体中的0时需要另一个&?这难道不会创建一个指向self&&self指针的指针,这是多余的吗 问题2:下面的deref函数不编译,但如果我在编译的主函数中执行了相同的操作 fn-deref(&self)->&self::Ta

我正在浏览锈书的部分,我对
deref
函数有疑问

structmybox(T);
为MyBox执行命令{
类型目标=T;
fn deref(&self)->&self::Target{
&self.0
}
}
问题1。如果输入参数(
&self
)已经是对
T
的引用,为什么在访问函数体中的
0
时需要另一个
&
?这难道不会创建一个指向self
&&self
指针的指针,这是多余的吗

问题2:下面的
deref
函数不编译,但如果我在编译的主函数中执行了相同的操作

fn-deref(&self)->&self::Target{
//让我的盒子:&MyBox=self;
让我的盒子:&&MyBox=&self;
//这不会使用上述两个my_box引用中的任何一个进行编译
//它要求另一个&。
我的盒子
}
上面的代码在主函数中使用时编译

fn main(){
让我的盒子:&MyBox=&MyBox(5);
我的盒子.0;
}

Q1:
&self
是对struct
MyBox
本身的引用,而不是其内部字段
self.0
的类型是T,这是实际的内部字段。要使返回类型
&Self::Target
匹配,您需要类型为
&T
&Self.0
(意思是
&Self.0)


Q2:与Q1相同,您需要使类型匹配
main
函数的返回类型是
()
,最后一条语句是
my_box.0(注意
)的类型匹配。

Q1:
&self
是对struct
MyBox
本身的引用,而不是其内部字段
self.0
的类型是T,这是实际的内部字段。要使返回类型
&Self::Target
匹配,您需要类型为
&T
&Self.0
(意思是
&Self.0)


Q2:与Q1相同,您需要使类型匹配
main
函数的返回类型是
()
,最后一条语句是
my_box.0(注意
)的类型匹配。

经过4年的生锈,我仍然害怕写
Deref
字。你的第一个问题是ABC,应该在书中加以解释。
Deref
是锈迹编程的一个危险领域吗?锈迹四年后,我仍然害怕写
Deref
word。你的第一个问题是ABC,应该在书中加以解释。
Deref
在编程中是一个危险的领域吗?