主要观点:提出“预览板条箱(preview crates)”的想法,它是 rust-lang 组织发布的特殊板条箱,可访问编译器内部,在稳定 Rust 中可用,用于在不确定如何在语言或标准库中暴露某些功能时让用户尝试,如 const 泛型团队的工作。
关键信息:
- 夜间工具链不足以开发大型语言特性,虽可用于实验但无保证,大多数用户仅用于玩具项目。
- 夜间工具链无法评估功能对大型生态系统的影响,预览模式可让人们基于其构建,同时在迭代时不影响现有板条箱。
- 版本(editions)可改变语法含义且现有代码继续工作,但代价高,不适合用于已知会在未来版本更改的特性。
- 以 const 泛型为例,目前有多种关于
const trait
暴露方式的选项,难以提前准确评估。 - 预览板条箱
rust_lang::const_preview
可暴露const_item
宏用于编写具有 const 特征边界的 const 函数,可发布不同版本并整合到语言中。 - 预览板条箱可让他人进行实验,如尝试不同的默认行为。
常见问题及回答: - 可能用于稳定用户体验不佳的特性。
- 担心积累大量预览板条箱导致无法将特性整合到 Rust 中。
- 应尽快做决定,但有时存在“推出东西”和“评估泛化”的紧张关系。
- 担心板条箱在 crates.io 上不能与编译器共同进化,可通过在系统根目录中暴露预览功能来解决。
- 考虑过使用
p#
关键字,但更喜欢板条箱的想法,可发布不同版本。 - 可用于需要定义新特征等的 API,但工具如 trait 别名有帮助。
- Ember 和 Java 有类似的预览概念,Ember 更注重范式转变,Java 的预览功能无 semver 保证。
- 考虑过使用装饰器,但解析器扩展问题较复杂。
目前处于“早期构思”阶段,只是认为需要类似“中间状态”的发布过程,预览板条箱可能是工具箱中的好工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。