本周,语言团队召开了十月规划会议(会议纪要)。我们每月第一个周三都会举行这样的会议。
规划会议用于
- 检查我们活跃倡议的状态
- 规划本月剩余时间的设计会议
每次会议结束后,我们都会发布一篇更新(就像这篇!),包含记录和会议公告。
活跃倡议更新
以下是本月提交的更新。请注意,许多较新的倡议都有专门的仓库,其中包含设计过程中的其他产物(例如,评估文档、待解决的设计问题等)。欢迎查看!
- 异步基础更新:
- Impl Trait 倡议更新
- 是什么? 模块和 impl 级别的
type Foo = impl Trait
。 - oli-obk 已完成对类型推断引擎的重写,使其更好地匹配 RFC 中提出的设计,并且正在缓慢合并中。
- 我们正在编写“类型别名 impl trait”的解释文档和稳定化文档。
- 我们希望添加语法来命名函数类型,这将解除“trait 中的 impl trait”的阻塞。
- 是什么? 模块和 impl 级别的
- Dyn Upcasting 倡议更新
- 是什么? 如果
trait Foo: Bar
,则能够将dyn Foo
转换为dyn Bar
。 - 进展良好,需要解决一个健全性问题,然后就可以合并了。
- 是什么? 如果
- 泛型关联类型 (GAT) 倡议更新
- 是什么? 在 Trait 中拥有带泛型参数的关联类型,例如
type Foo<'me>
的能力。 - 通过决定采用一条保守(尽管不是最符合人体工程学)的路径,解决了 where 子句默认值的问题。
- 正在朝着我们可以稳定化的目标持续进展。我们的意图是先从一些已知的人体工程学缺陷入手,然后在此基础上改进。
- 是什么? 在 Trait 中拥有带泛型参数的关联类型,例如
- Let else 更新
- 是什么?
let
的泛化,允许你在匹配失败时进行匹配并 panic、返回等操作。let Ok(x) = something else panic!()
- nightly 版本中已提供实现,可能已功能完整。
- 是什么?
- Deref patterns 更新
- 是什么? 在匹配的上下文中使用 Deref impls,例如
match rc { Some(x) => ..., None => ... }
。 - 决定构建一个原型,该原型没有明确的 deref 语法,并且仅适用于“已知安全”的标准库类型(std types)。
- 是什么? 在匹配的上下文中使用 Deref impls,例如
- Never Type 稳定化更新
- 是什么? Never Type
!
1 - 我们已经引入了一种改进的(尽管有些复杂)分析方法,它允许我们在当前行为(回退到
()
)和新行为(回退到!
)之间进行选择,而不会破坏重要的现有代码。希望能够继续推进稳定化,并使用警告、版本(editions)或其他工具缓慢改进和简化规则。
- 是什么? Never Type
除了上述报告,您还可以在会议纪要中找到更详细的讨论。
即将到来的设计会议
我们已计划以下设计会议
- 10 月 13 日:GAT 和类型别名中的 where 子句语法 (lang-team#120)
- 10 月 20 日:dyn upcasting 的安全性考虑 (lang-team#119)
- 10 月 27 日:禁止 drop impls 中的 unwind (lang-team#97)
设计会议期望
- 会议文档必须在周二的分流会议 (triage meeting) 之前准备好,并发布到追踪问题 (tracking issue) 中。
- 如果届时未能发出,会议将取消。这给了大家 24 小时的通知时间。
- 不强制要求大家在会议前阅读文档。会议将以回顾文档开始。
- 然而,并没有规定禁止提前阅读文档并提供反馈或改进建议。