rust - 为什么不能重载引用运算符 (&)?
问题描述
为什么可以使用特征和重载取消引用运算符*
(和隐式) ,但不能重载?.
Deref
DerefMut
&
我是出于好奇而问的。我没有具体的用例。我想了解 和 之间的不对称&
性*
。它们是如此密切相关,几乎是互逆的,但只有一个可以重载。
这是一个用例,适合那些想要的人。这很做作,而且很模糊。如果*
访问智能指针的值,则&
可以创建一个智能指针,以便特定类型默认为智能指针而不是引用。
解决方案
这是一个猜测...
对于任何类型T
,都有许多指针类型:引用(共享和独占),以及各种智能指针(Box
、Cell
等Rc
)。这些都可以取消引用。也就是说,解引用是多对一的,可以完全由单个 operator 定义*
。同时,创建指针类型是一对多的,不能由单个操作符定义&
。
推荐阅读
- javascript - PWA 是否与浏览器共享 web-push 订阅?
- ionic-framework - Ionic serve -l 显示较旧的错误?
- java - 如何清理大型项目中的 JSP 依赖项
- react-native - 如何在 React Native 中实现 TinyMCE?
- wkhtmltopdf - FileNotFoundError: [Errno 2] No such file or directory: 'which' when using python pdfkit
- android - 如何获取运行时错误的完整信息而不是
? - javascript - Vue JS在组件中设置数据收集
- typescript - 在 Reactive forms angular 5 中使用 formarray 动态添加表单
- android - android 前台应用时每 5 秒更新一次状态
- spring-data-jpa - Spring with Querydsl:空指针异常