Rust 1.80 发布:关键变化与新特性概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Rust 1.80 发布:关键变化与新特性概览



Rust 开发团队发布了又一个稳定版本——1.80.0。此次更新带来了几个期待已久的功能,稳定了一系列 API,并改善了用户体验。让我们来看看有哪些变化,以及这些新特性将如何影响开发。



LazyCell 和 LazyLock 的稳定化

也许最引人注目的新特性是 LazyCell 和 LazyLock 类型的稳定化。此前,要实现数据的惰性初始化,不得不使用第三方 crate(例如 once_cell)或复杂的结构。

  • LazyCell —— 用于单线程上下文的非阻塞惰性初始化。允许将值的创建延迟到首次访问时。
  • LazyLock —— 线程安全版本,使用互斥锁进行访问同步。非常适合全局配置和单例模式。

这两种类型都实现了 Deref 和 DerefMut trait,使其使用起来非常方便。现在,标准库涵盖了最常见的惰性初始化场景。



API 稳定化:Exclusive 及其他

在 1.80 版本中,稳定了一系列新的 API:

  • Exclusive —— 用于对值进行独占访问的包装器。允许在异步上下文中安全地处理非 Send 类型,通过闭包提供同步访问。
  • BorrowedBuf::as_slice 和 BorrowedCursor::as_slice 方法 —— 简化了输入输出缓冲区的操作。
  • HashMap::extract_if 和 HashSet::extract_if —— 迭代器,允许根据谓词从集合中移除元素并获取其所有权。


编译器改进

Rust 团队持续改进编译器的反馈信息。在 1.80 版本中,改进了 trait 和生命周期使用不当时的错误消息。现在编译器会提供更精确的提示,这对初学者尤其有用。

  • 改进了与实现 Drop 的类型相关的错误诊断。
  • 导入冲突时提供更清晰的消息。
  • 优化了使用宏的项目的编译时间。


这对开发者意味着什么?

建议所有积极使用惰性初始化或处理异步代码的开发者更新到 Rust 1.80。LazyLock 的稳定化使得可以摆脱外部依赖,简化构建并提高安全性。集合的新方法使代码更加地道,而改进的编译器诊断则加快了调试速度。



对于学习 Rust 或将其与 Python 结合使用(例如通过 PyO3)的 PythonLib 用户来说,此次更新也很重要:稳定的 API 和改进的编译器性能使 Rust 在系统编程和高负载服务方面更具吸引力。



完整的变更列表可在官方发布说明中查看。可以通过命令 rustup update stable 更新 Rust。

推荐库