Appearance
16.6 小结
Rust 中允许一部分运算符可以由用户自定义行为,即“操作符重载”。其中“解引用”是一个非常重要的操作符,它允许重载。
而需要提醒大家注意的是,“取引用”操作符,如&、&mut,是不允许重载的。因此,“取引用”和“解引用”并非对称互补关系。*&T
的类型一定是 T,而&*T
的类型未必就是 T。
更重要的是,读者需要理解,在某些情况下,编译器帮我们插入了自动 deref 的调用,简化代码。
在 Deref 的基础上,我们可以封装出一种自定义类型,它可以直接调用其内部的其他类型的成员方法,我们可以把这种类型称为智能指针类型。