附录 E - 版本
在第一章中,你看到 cargo new
向你的 Cargo.toml 文件中添加了一些关于版本的元数据。本附录将讨论这意味着什么!
Rust 语言和编译器有一个六周的发布周期,这意味着用户可以不断获得新功能。其他编程语言发布较大的更改频率较低;Rust 则更频繁地发布较小的更新。经过一段时间后,所有这些微小的变化会累积起来。但从一个版本到另一个版本,可能很难回顾并说:“哇,从 Rust 1.10 到 Rust 1.31,Rust 变化真大!”
大约每三年,Rust 团队会发布一个新的 Rust 版本。每个版本将已实现的功能整合到一个清晰的包中,并附带完全更新的文档和工具。新版本作为常规六周发布周期的一部分发布。
版本对不同的人有不同的目的:
- 对于活跃的 Rust 用户,新版本将增量变化整合到一个易于理解的包中。
- 对于非用户,新版本标志着一些重大进展的实现,这可能使 Rust 值得再次关注。
- 对于开发 Rust 的人来说,新版本为整个项目提供了一个集结号。
在撰写本文时,有四个 Rust 版本可用:Rust 2015、Rust 2018、Rust 2021 和 Rust 2024。本书使用 Rust 2024 版本的惯用法编写。
Cargo.toml 中的 edition
键指示编译器应该为你的代码使用哪个版本。如果该键不存在,Rust 会出于向后兼容的原因使用 2015
作为版本值。
每个项目可以选择使用默认的 2015 版本以外的版本。版本可能包含不兼容的更改,例如包含一个与代码中的标识符冲突的新关键字。然而,除非你选择加入这些更改,否则即使你升级了使用的 Rust 编译器版本,你的代码仍将继续编译。
所有 Rust 编译器版本都支持在该编译器发布之前存在的任何版本,并且它们可以将任何支持的版本的 crate 链接在一起。版本更改仅影响编译器最初解析代码的方式。因此,如果你使用的是 Rust 2015,而你的一个依赖项使用的是 Rust 2018,你的项目将能够编译并使用该依赖项。反之亦然,如果你的项目使用 Rust 2018,而依赖项使用 Rust 2015,同样可以正常工作。
需要明确的是:大多数功能在所有版本中都可用。使用任何 Rust 版本的开发者将继续看到新稳定版本发布时的改进。然而,在某些情况下,主要是当添加新关键字时,一些新功能可能仅在较新的版本中可用。如果你想利用这些功能,你需要切换版本。
有关更多详细信息,版本指南 是一本完整的关于版本的书,它列举了版本之间的差异,并解释了如何通过 cargo fix
自动将你的代码升级到新版本。