主要观点:
- 长期以来,
Extern types因狭窄的专业问题被阻塞,Rust 现将类型分为Sized和Unsized两类,而对于外部类型需要第三类(大小永远不可知),?Sized符号在此情况下不能自然扩展,提议用T: Unsized替代T:?Sized(有时用T: DynSized)。 - 解释了默认
T: Sized绑定的原因及?Sized符号的由来,包括其?表示反向操作、可扩展到其他默认边界等,但认为?在扩展到“程度差异”时效果不佳且看起来“更神奇”。 - 阐述了新特性的使用方法,如
size_of方法应改为T: DynSized,多数?Sized的使用应改为Unsized。还提出了一些替代方案,如更改名称、使用某种符号或完全放弃隐式绑定等,并对各方案进行了分析。
关键信息:
- 提议的新的大小特性家族:
Sized、DynSized、Unsized。 ?Sized符号的特点及问题。- 新特性在
size_of方法等方面的使用改变。 - 关于替代方案的讨论及各自的优缺点。
重要细节:
- 提到设计并非自己原创但不知出处,希望得到相关链接以确认。
- 举例说明在特定数据结构中使用
Unsized绑定的情况。 - 提及对“必须移动”类型的看法,将其作为另一个话题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。