有大小限制的、动态大小的和无大小限制的· 初步尝试

主要观点:

  • 长期以来,Extern types因狭窄的专业问题被阻塞,Rust 现将类型分为SizedUnsized两类,而对于外部类型需要第三类(大小永远不可知),?Sized符号在此情况下不能自然扩展,提议用T: Unsized替代T:?Sized(有时用T: DynSized)。
  • 解释了默认T: Sized绑定的原因及?Sized符号的由来,包括其?表示反向操作、可扩展到其他默认边界等,但认为?在扩展到“程度差异”时效果不佳且看起来“更神奇”。
  • 阐述了新特性的使用方法,如size_of方法应改为T: DynSized,多数?Sized的使用应改为Unsized。还提出了一些替代方案,如更改名称、使用某种符号或完全放弃隐式绑定等,并对各方案进行了分析。

关键信息:

  • 提议的新的大小特性家族:SizedDynSizedUnsized
  • ?Sized符号的特点及问题。
  • 新特性在size_of方法等方面的使用改变。
  • 关于替代方案的讨论及各自的优缺点。

重要细节:

  • 提到设计并非自己原创但不知出处,希望得到相关链接以确认。
  • 举例说明在特定数据结构中使用Unsized绑定的情况。
  • 提及对“必须移动”类型的看法,将其作为另一个话题。
阅读 160
0 条评论