主要观点:
- 长期以来,
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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。