Rust 团队在 11 月 12 日推出 Rust 1.100 稳定版本,这也是 Rust 第一个三位数版本,本次最核心的更新就是打磨了接近十年、历经五次稳定尝试的永不返回类型!正式转正稳定,开发者现在可以在任意类型位置直接使用这个类型,不再局限于函数返回值,同时标准库里面的 Infallible 也直接变成永不返回类型的别名,两种写法可以互通。永不返回类型代表不会产生任何有效值的代码分支,比如 panic、进程退出、无限循环这类代码,编译器可以借助它精准识别不可达代码,做更好的静态检查、优化代码路径。这次转正同时修改了类型推导的回退规则,2015、2018、2021 所有版本的 Edition 里,! 类型的推导回退目标都改成自身,不再默认回退到单元类型 (),虽然绝大多数项目不受影响,但少数依赖旧推导逻辑的老代码会出现编译报错,需要手动调整。除永不返回类型之外,Rust1.100 还上线自定义分配器 API、Cargo 依赖冷却机制、构建缓存优化等配套能力,进一步完善内存管理和包管理体验。
一、永不返回类型转正带来的核心变化清单
- 使用范围放开:之前仅在函数返回位置隐式使用,1.100 之后可以在泛型、Result、变量标注等任意位置显式写!
- Infallible 别名对齐:std::convert::Infallible = !,两类 API 可以无缝兼容
- 推导规则统一:全部 Edition 下,! 类型找不到目标类型时回退为!,不再回退为 ()
- 编译器能力提升:编译器更准确标记不可达分支,冗余代码直接被优化,错误提示更清晰
二、永不返回类型适合的业务场景
- 永远不会返回的函数:进程退出、无限循环、直接 panic 的函数
- 无错误场景 Result:Result
,代表这个 Result 永远不会走到 Err 分支 - 枚举、泛型里标记不可能存在的分支,做静态类型约束
三、升级 Rust1.100 需要留意的兼容风险
- 少数老代码依赖旧的回退逻辑,升级后编译失败,需要补全类型标注
- 社区已经提前批量修复大量 crates,主流库基本适配完成
- 临时方案:遇到编译问题可以锁定 Rust 版本到 1.99,或者升级依赖包、手动补充类型声明
四、Rust1.100 其他重点更新
- 稳定自定义内存分配器相关 API,方便嵌入式、高性能场景替换分配器
- Cargo 新增依赖冷却机制,降低重复拉取依赖的频率,提升构建速度
- 新增std::mem::conjure_zst,简化零大小类型相关写法
- 多项 lint 检查、平台支持、标准库小 API 同步稳定
【常见问题】
问题 1:Rust 1.100 发布后永不返回类型转正,永不返回类型是什么?
回答 1:Rust 1.100 发布后永不返回类型转正,永不返回类型标记为!,代表代码永远不会产出有效值,像 panic、进程退出、无限循环都属于这类逻辑,编译器可以识别这部分是不可达代码。
问题 2:Rust 1.100 永不返回类型转正,和之前非正式使用有什么区别?
回答 2:Rust 1.100 永不返回类型转正之前,只能在函数返回位置隐式使用,不能随便写在泛型、变量等位置;转正之后可以在所有类型位置显式声明,同时 Infallible 和!互相别名,推导规则全版本统一。
问题 3:升级 Rust 1.100,永不返回类型转正会不会导致项目编译报错?
回答 3:Rust 1.100 永不返回类型转正修改了类型回退规则,大部分项目不受影响,只有少数依赖旧的回退到 () 逻辑的老代码会编译失败,可以补类型标注或者暂时锁定低版本 Rust。
问题 4:Rust 1.100 永不返回类型转正,这个功能研发周期多久?
回答 4:Rust 1.100 永不返回类型转正,这个功能前后打磨接近 10 年,一共经历 5 次稳定化尝试,才正式进入稳定版本。
【参考资料】
[2026-11-13](Rust 1.100.0 稳定版发布:版本号首次迈入三位数,永不返回类型历经 10 年终于转正)新浪科技
[2026-11-12](Announcing Rust 1.100.0)Rust 官方博客
[2026-11-12](Rust 1.100 Stabilizes Never Type After a Decade of Development)Linuxiac
[2026-11-13](Rust 1.100 发布:永不返回类型、自定义分配器、Cargo 依赖冷却)IT 之家
【免责声明】
本文仅为 Rust 版本资讯整理,不构成技术选型建议。Rust 1.100 永不返回类型转正存在少量兼容性变更,开发者升级前建议在测试环境验证代码编译与运行效果,不同项目、第三方库适配情况存在差异,版本升级风险由开发者自行评估承担。
