附录 E - 版本
在第 1 章中,您看到 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 2021版的惯用法编写。
edition
键在 Cargo.toml 中表示编译器应为您的代码使用哪个版本。如果该键不存在,Rust 会出于向后兼容的原因使用 2015
作为版本值。
每个项目可以选择使用默认的 2015 版本以外的版本。版本可以包含不兼容的更改,例如引入与代码中的标识符冲突的新关键字。但是,除非您选择接受这些更改,否则即使您升级了使用的 Rust 编译器版本,您的代码仍将继续编译。
所有 Rust 编译器版本都支持在该编译器发布之前存在的任何版本,并且可以将任何支持的版本的 crate 链接在一起。版本更改仅影响编译器最初解析代码的方式。因此,如果您使用的是 Rust 2015,而您的某个依赖项使用 Rust 2018,您的项目将能够编译并使用该依赖项。相反的情况,即您的项目使用 Rust 2018 而依赖项使用 Rust 2015,也同样适用。
为了明确:大多数功能将在所有版本中提供。使用任何 Rust 版本的开发人员将继续看到随着新稳定版本的发布而带来的改进。然而,在某些情况下,主要是当添加新关键字时,某些新功能可能仅在较新版本中可用。如果您想利用这些功能,需要切换版本。
有关更多详细信息,请参阅版本指南,这是一本关于版本的完整书籍,列举了不同版本之间的差异,并解释了如何通过cargo fix
自动将代码升级到新版本。