You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

附录 DRust版本

早在第一章,我们见过 cargo newCargo.toml 中增加了一些有关 edition 的元数据。本附录将解释其意义!

与其它语言相比Rust的更新迭代较为频繁(得益于精心设计过的发布流程以及Rust语言开发者团队管理)

  • 每6周发布一个迭代版本
  • 2-3年发布一个新的大版本Rust 2021 edtion, 每一个版本会结合已经落地的功能,并提供一个清晰的带有完整更新文档和工具的功能包。新版本会作为常规的 6 周发布过程的一部分发布。

好处在于,可以满足不同的用户群体的需求:

  • 对于活跃的Rust用户他们总是能很快获取到新的语言内容毕竟尝鲜是技术爱好者的共同特点:)
  • 对于一般的用户edition的发布会告诉这些用户Rust语言相比上次大版本发布有了重大的改进值得一看
  • 对于Rust语言开发者可以让他们的工作成果更快的被世人所知不必锦衣夜行

在本文档编写时Rust 已经有三个版本Rust 2015、2018、2021。本书基于 Rust 2021 edition 编写。

Cargo.toml 中的 edition 字段表明代码应该使用哪个版本编译。如果该字段不存在,其默认为 2021 以提供后向兼容性。

每个项目都可以选择不同于默认的 2021 edition 的版本。这样,版本可能会包含不兼容的修改,比如新增关键字可能会与代码中的标识符冲突并导致错误。不过除非选择兼容这些修改,(旧)代码仍将能够编译,即便升级了 Rust 编译器的版本。

所有 Rust 编译器都支持任何之前存在的编译器版本,并可以链接任何支持版本的 crate。编译器修改只影响最初的解析代码的过程。因此如果你使用 Rust 2021 而某个依赖使用 Rust 2018你的项目仍旧能够编译并使用该依赖。反之若项目使用 Rust 2018 而依赖使用 Rust 2021 亦可工作。

有一点需要明确:大部分功能在所有版本中都能使用。开发者使用任何 Rust 版本将能继续接收最新稳定版的改进。然而在一些情况,主要是增加了新关键字的时候,则可能出现了只能用于新版本的功能。只需切换版本即可利用新版本的功能。

请查看 Edition Guide 了解更多细节,这是一个完全介绍版本的书籍,包括如何通过 cargo fix 自动将代码迁移到新版本。