Rust 1.85 发布:新版本有何变化
Rust 开发团队发布了该语言的又一个稳定更新——版本 1.85。此版本带来了一系列期待已久的功能,这些功能简化了异步代码的编写,提升了性能,并扩展了开发者工具集。让我们来看看关键变化。
async closures 稳定化
主要亮点之一是 async closures 的稳定化——即可以是异步的闭包。以前,要返回一个异步闭包,必须手动编写带有 impl Future 的复杂签名。现在,编译器支持以下语法:
- async || { ... } —— 直接声明异步闭包。
- 支持生命周期的变量自动捕获。
- 与
FnOnce、FnMut和Fntrait 的兼容性。
这简化了在 Web 框架(例如 Axum 或 Actix)中编写异步事件处理器、中间件和回调函数的过程。
改进的 borrow checker
在 Rust 1.85 中,借用检查器得到了显著增强。现在它能更好地理解变量在部分移动后被使用的情况:
- 允许借用结构体的单个字段,即使其他字段已被移动。
- 改进了迭代器中嵌套借用的处理。
- 减少了包含条件结构的代码中的误报警告数量。
这在处理需要部分所有权的大型数据结构时尤其有用。
宏的新功能
此版本包含宏系统(proc macros)的扩展:
- 增加了对 token streams 的支持,允许修改源代码中的位置。
- 简化了为结构体和枚举创建属性宏的过程。
- 改进了宏内部的错误处理——现在消息会精确显示用户代码中的行号。
这将使序列化(serde)、Web 路由和代码生成库的开发更加灵活。
编译器优化与 cargo 改进
开发者们继续致力于编译性能的提升:
- 大型项目的增量编译速度加快(最高提升 15%)。
cargo check增加了对并行依赖分析的支持。cargo build改进了中间构建产物的缓存。
此外,cargo 中新增了一个命令 cargo info,它可以在不下载包的情况下显示注册表中包的详细信息(版本、依赖项、许可证)。
安全修复与稳定性
在 1.85 版本中,修复了多个与不安全代码(unsafe)处理相关的漏洞。修复了使用 std::mem::transmute 和 MaybeUninit 时的内存操作错误。Rust 团队建议所有用户进行更新,以确保项目的安全性。
如何更新
可通过官方安装程序 rustup 进行更新。要安装新版本,请执行以下命令: