Rust 1.100 发布:悬了十年的 never 类型终于稳定
来源:blog.rust-lang.org — 2026-11-12
📋 概述
Rust 1.100 最重的改动是 never 类型 ! 稳定,此前它经历了十年和五次失败的稳定化尝试。同版本还稳定了 allocator API 的核心部分(Allocator trait,目前可用于 Vec 与 Box)、core::mem::DropGuard 与 std::mem::conjure_zst。Cargo 侧新增未使用依赖警告、减少构建缓存碰撞,以及用于延迟发布的 min-publish-age。
🔑 核心要点
- ! 现在可以在任何位置命名,比如 Result<T, !>;Infallible 变成 ! 的别名
- 为配合 Infallible 改动,2024 之前版本里 never 类型的回退类型从 () 改成 !,属破坏性变更
- DropGuard::new(变量, 闭包) 在析构时执行闭包,dismiss 可取消,适合写「全成或全回滚」的事务式 API
- conjure_zst 是创建零尺寸类型值的专用入口,取代 transmute(()) 之类咒语,但仍是 unsafe——PyO3 的 GIL 令牌就靠它不可构造来保安全
- Cargo 现在会报告未使用依赖,但只在你构建所有可能用到该项的 target 时才提示,dev-dependencies 不提示
- 构建目录统一按构建步骤组织并套上配置哈希,减少共享 build-dir 与 git worktree 场景下的多余或漏掉的重编译
💡 金句
我们尽可能缩小了这项破坏性变更的影响:提前很久给出未来兼容性警告,并为被它弄坏的公开 crate 发布了修复。
← 返回 Lobsters 首页
👍 0
👎 0