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