Rustfmt 代码格式化工具配置详解
rustfmt Format Rust code 项目地址: https://gitcode.com/gh_mirrors/ru/rustfmt
Rustfmt 是 Rust 官方提供的代码格式化工具,它能够自动将 Rust 代码格式化为统一的风格。本文将深入介绍 Rustfmt 的配置选项,帮助你根据项目需求定制代码格式化规则。
配置文件基础
Rustfmt 使用 TOML 格式的配置文件,支持以下两种命名方式:
rustfmt.toml
.rustfmt.toml
配置文件可以放置在以下位置:
- 项目目录或其任意父级目录
- 用户主目录
- 全局配置目录下的 rustfmt 子目录
示例配置
# 基本配置示例
indent_style = "Block" # 缩进风格
reorder_imports = false # 是否重新排序导入
配置选项分类详解
1. 代码布局选项
brace_style
- 大括号风格
控制函数、结构体和枚举的大括号位置:
"SameLineWhere"
(默认):where 子句时保持大括号在同一行"AlwaysNextLine"
:总是将大括号放在新行"PreferSameLine"
:尽量保持大括号在同一行
control_brace_style
- 控制流大括号风格
专门针对 if/else/while/for 等控制流结构的大括号位置:
"AlwaysSameLine"
(默认):控制关键字后直接跟大括号"AlwaysNextLine"
:总是将大括号放在新行"ClosingNextLine"
:仅 else 的大括号放在新行
2. 宽度控制选项
max_width
- 最大行宽
代码行的最大宽度,默认为 100。这是 Rustfmt 的核心配置,影响多项宽度相关决策。
array_width
- 数组字面量宽度
数组字面量超过此宽度时会转为垂直格式,默认为 60。
fn_call_width
- 函数调用宽度
函数调用参数超过此宽度时会转为垂直格式,默认为 60。
3. 空白行控制
blank_lines_lower_bound
- 最小空白行数
强制在项目之间保持的最小空白行数,默认为 0。
blank_lines_upper_bound
- 最大空白行数
自动修剪超过此数量的连续空白行,默认为 1。
4. 表达式格式化
binop_separator
- 二元操作符位置
控制多行二元表达式中操作符的位置:
"Front"
(默认):操作符在前一行末尾"Back"
:操作符在后一行开头
combine_control_expr
- 控制表达式组合
是否将控制表达式(if/while/for等)与宏调用组合在同一行,默认为 true。
5. 注释格式化
comment_width
- 注释宽度
控制注释自动换行的宽度,默认为 80。需要配合 wrap_comments
使用。
wrap_comments
- 注释换行
是否自动换行过长的注释,默认为 false。
高级配置技巧
版本控制
edition = "2021" # 指定使用的 Rust 版本
启用实验性功能
unstable_features = true # 启用不稳定功能
禁用格式化
disable_all_formatting = true # 完全禁用格式化
最佳实践建议
-
项目一致性:在团队项目中,应在项目根目录放置配置文件,确保所有成员使用相同的格式化规则。
-
渐进式调整:不要一次性修改太多配置选项,建议逐步调整找到最适合团队的风格。
-
版本控制:对于跨版本项目,明确指定
edition
配置以避免解析差异。 -
宽度设置:根据团队显示器尺寸和代码审查习惯设置
max_width
,常见值为 80-120。 -
空白行控制:合理使用
blank_lines_*
选项保持代码段落感,但避免过多空白行。
通过合理配置 Rustfmt,可以显著提高代码可读性和维护性,同时减少团队在代码风格上的争议。建议团队定期评审格式化配置,确保其符合项目发展和团队习惯。
rustfmt Format Rust code 项目地址: https://gitcode.com/gh_mirrors/ru/rustfmt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考