Rust 的 never 类型终于稳定:两年攻坚与一处小幅破坏性变更
来源: lwn.net — 2026-09-08
概述
LWN 报道 Rust 的 never 类型(写作 !)在 8 月 24 日终于稳定,贡献者 waffle 为此花了两年多。这个类型用于标记永不返回的函数以及值不可能出现的位置,长期只在编译器内部使用。稳定过程之所以漫长,一部分原因是它牵涉一个针对既有 edition 的小幅破坏性变更,维护者必须确认它不会影响大量真实代码。文章解释了两层动因:实用上它能让泛型代码更高效——比如把 FromStr 的错误类型设为 !,编译器就知道 Result 的错误分支永不存在,可以优化掉相关检查;哲学上则关乎正确的类型推断,因为 if、while 这类构造在 Rust 里是表达式,无限循环的结果需要一个可推断的类型。
核心要点
- never 类型用 ! 表示,标记永不返回的函数与不可能出现的值,8 月 24 日完成稳定。
- 稳定耗时两年多,主要卡在它引入了一处针对旧 edition 的小破坏性变更。
- 实用价值:把 FromStr::Err 设为 ! 后,编译器知道错误分支不存在,可消除相应代码。
- 哲学价值:if/while 是表达式,无限循环这类构造需要有一个可推断的返回类型。
- 语法上 ! 同时用于宏调用,但文法保证两者不会出现在同一位置。
- 文章附带解释了 dyn Trait、impl Trait 与 Default 为何都不能当作 Trait 的类型级等价物。
金句
经过两年多的工作,Rust 编译器贡献者 waffle 终于把这个类型稳定了下来。
👍 0
👎 0
返回 Lobsters 首页