Rustfmt:风格版本

摘要

用户现在可以控制 rustfmt 使用的风格版本。

详细信息

Rustfmt 生成的默认格式化受 Rust 风格指南 中的规则约束。

此外,Rustfmt 具有格式化稳定性保证,旨在避免用户在更新 Rust 工具链时引起嘈杂的格式化变动。这项稳定性保证本质上意味着,新版本的 Rustfmt 不能修改先前版本的 Rustfmt 生成的成功格式化的输出。

这两个约束的结合在历史上锁定了风格指南和 Rustfmt 中的默认格式化行为。这种僵局导致了各种挑战,例如阻止了对风格改进进行迭代的能力,并要求 Rustfmt 维护早已过时的遗留格式化怪癖(例如,嵌套元组访问)。

RFC 3338 通过建立一种机制解决了这种僵局,该机制使 Rust 风格指南与 Rust 的版本模型对齐,其中风格指南可以在不同版本之间演变,并且 rustfmt 将允许用户指定他们所需的风格指南版本,即风格版本。

在 2024 版本中,rustfmt 现在支持用户控制用于格式化的风格版本。2024 版本的风格指南还包括对风格指南的增强,这些增强在本版本指南的其他地方有详细介绍。

默认情况下,rustfmt 将使用与用于解析的标准 Rust 版本相同的风格版本,但风格版本也可以被覆盖和单独配置。

有多种方法可以使用 2024 风格版本运行 rustfmt

使用 edition 设置为 2024Cargo.toml 文件,运行

cargo fmt

或者直接使用 2024 运行 rustfmt,以便为解析和风格指南都使用 2024 版本

rustfmt lib.rs --edition 2024

风格版本也可以在 rustfmt.toml 配置文件中设置

style_edition = "2024"

然后在直接运行 rustfmt 时使用

rustfmt lib.rs

或者,可以直接从 rustfmt 选项中指定风格版本

rustfmt lib.rs --style-edition 2024

迁移

使用 2024 版本或风格版本运行 cargo fmtrustfmt 将自动将格式迁移到 2024 风格版本格式。

强烈建议拥有可能使用其编辑器保存时格式化功能的贡献者的项目,在其项目中添加一个 .rustfmt.toml 文件,其中包含项目中使用的相应 style_edition,或者鼓励其用户确保其本地编辑器的保存时格式化功能配置为使用相同的 style_edition

这是为了确保编辑器保存时格式化的输出与开发者手动执行 cargo fmt 或项目 CI 流程时的输出一致(许多编辑器将直接运行 rustfmt,默认情况下使用 2015 版本,而 cargo fmt 使用 Cargo.toml 文件中指定的版本)。