Rust 2024 版注释

主要观点:Rust 1.85 发布,伴随 edition 2024,此版本比之前两版大,包含语言生活质量的小改进。介绍了 Rust 中 edition 的概念及 2024 版的核心语言、标准库、Cargo、Rustdoc、Rustfmt 等方面的变化。
关键信息

  • edition 概念:Rust 的 edition 是编译器的兼容性模式,使某些更改对旧代码“不存在”,同时允许新代码改进,不同 edition 代码可混合使用。
  • 核心语言变化

    • Return-position impl Trait lifetime 捕获规则改变,2024 版默认捕获所有生命周期,示例代码编译方式改变。
    • 临时作用域有变化,if let和尾表达式中的临时变量作用域在 2024 版有所调整。
    • Match 语法使用有变化,非显式模式中使用ref等捕获修饰符在 2024 版为错误。
    • unsafe相关变化,extern块、一些属性需标记为unsafe,禁止引用static mut数据等。
    • 禁止对Never类型进行强制转换,改变了强制转换的回退类型。
    • 宏片段规范器更新,:tt片段规范器可匹配_const表达式,且宏片段需有类型规范器。
    • 新增保留构造gen和特定的#序列。
  • 标准库变化

    • 预导入(prelude)添加FutureIntoFuture
    • Box<[T]>实现IntoIterator<Item=T>,直接调用Box::<[T]>::into_iterator在旧版隐藏以保持旧行为。
    • 一些标准库函数标记为unsafe,如修改环境变量函数和CommandExt::before_exec
  • Cargo 变化:有新的依赖解析器考虑当前 Rust 版本,选项命名更一致,清理工作空间依赖。
  • Rustdoc 变化:Rustdoc 测试可合并为单个二进制以提高编译时间,嵌套include!处理方式改变。
  • Rustfmt 变化:可设置style_edition有自己的 backward-incompatible 变化,包括格式化修复和排序顺序改变。
    重要细节
  • 文中详细说明了各变化的示例及相关参考文档,如各种规则的错误示例及对应解决方法等。
  • 提及多数变化可通过cargo fix解决,且 2024 版以小变化为主,语言处于健康发展状态,利于在现实世界中推广应用。
阅读 34
0 条评论