Rustfmt:风格版本
摘要
用户现在可以控制 rustfmt
使用的风格版本。
详细信息
Rustfmt 生成的默认格式化受 Rust 风格指南 中的规则约束。
此外,Rustfmt 具有格式化稳定性保证,旨在避免用户在更新 Rust 工具链时引起嘈杂的格式化变动。这项稳定性保证本质上意味着,新版本的 Rustfmt 不能修改先前版本的 Rustfmt 生成的成功格式化的输出。
这两个约束的结合在历史上锁定了风格指南和 Rustfmt 中的默认格式化行为。这种僵局导致了各种挑战,例如阻止了对风格改进进行迭代的能力,并要求 Rustfmt 维护早已过时的遗留格式化怪癖(例如,嵌套元组访问)。
RFC 3338 通过建立一种机制解决了这种僵局,该机制使 Rust 风格指南与 Rust 的版本模型对齐,其中风格指南可以在不同版本之间演变,并且 rustfmt
将允许用户指定他们所需的风格指南版本,即风格版本。
在 2024 版本中,rustfmt
现在支持用户控制用于格式化的风格版本。2024 版本的风格指南还包括对风格指南的增强,这些增强在本版本指南的其他地方有详细介绍。
默认情况下,rustfmt
将使用与用于解析的标准 Rust 版本相同的风格版本,但风格版本也可以被覆盖和单独配置。
有多种方法可以使用 2024 风格版本运行 rustfmt
使用 edition
设置为 2024
的 Cargo.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 fmt
或 rustfmt
将自动将格式迁移到 2024 风格版本格式。
强烈建议拥有可能使用其编辑器保存时格式化功能的贡献者的项目,在其项目中添加一个 .rustfmt.toml
文件,其中包含项目中使用的相应 style_edition
,或者鼓励其用户确保其本地编辑器的保存时格式化功能配置为使用相同的 style_edition
。
这是为了确保编辑器保存时格式化的输出与开发者手动执行 cargo fmt
或项目 CI 流程时的输出一致(许多编辑器将直接运行 rustfmt
,默认情况下使用 2015 版本,而 cargo fmt
使用 Cargo.toml
文件中指定的版本)。