rust 代码格式化
业务代码
fn main() {
let naive_boy = " Handsome!";
let naive_girl = " Beautiful!";
println!("{}{}", naive_boy, naive_girl);
}
你把项目中代码写成这个样子,保准会被旁边的狗骂你xx
正确的格式,应当是酱紫
fn main() {
let naive_boy = " Handsome!";
let naive_girl = " Beautiful!";
println!("{}{}", naive_boy, naive_girl);
}
官方自带的工具
在通过rustup
方式安装的rust中,在你的.cargo/bin
目录下,有两条可执行命令
cargo-fmt
rustfmt
,并且cargo命令中也有对应的子命令 cargo fmt
cargo fmt
、cargo-fmt
和 rustfmt
都与代码格式化相关,且都是官方提供的工具
-
rustfmt
这个命令是实际执行代码格式化操作的底层程序。它直接读取 Rust 源代码文件,按照 Rust 社区的代码风格规范(Rust Style Guide)对代码进行格式化。
使用方式通常是直接指定文件:rustfmt src/main.rs # 格式化单个文件
-
cargo fmt
这是 Rust 构建工具cargo
提供的格式化命令,它本质上是rustfmt
的封装,用于更方便地在 Cargo 项目中使用格式化功能。
特点:- 无需手动指定文件路径,默认会格式化项目中所有的 Rust 代码(遵循
Cargo.toml
定义的项目结构)。 - 会自动读取项目中的
rustfmt.toml
配置文件,应用自定义格式化规则。
常用命令:
cargo fmt # 格式化整个项目 cargo fmt --check # 检查格式是否符合规范(不修改文件)
- 无需手动指定文件路径,默认会格式化项目中所有的 Rust 代码(遵循
-
cargo-fmt
这是早期版本中cargo fmt
命令的别名,现在已基本不再使用。在当前的 Rust 工具链中,cargo-fmt
通常会被解析为cargo fmt
,两者行为一致。
就当不存在就行了
总结
- 格式化指定文件用
rustfmt
- 整个项目格式化用
cargo fmt
,并且支持自定义格式规范rustfmt.toml
配置即可
编辑器中使用
在开发golang
的时候,安装了语言的官方对应扩展后,gofmt
会自动启动
例如,IDE中按下command + s
会自动格式化当前文件
在rust
中,需要人工设置一下
我这里使用的vscode
,这里包含了一切以vscode
套壳的各路牛马IDE,某Tree Cursor Code
及各路拴马绳
使用全家桶的自行google
编辑器配置
-
rust
的插件rust-analyzer
,这个大多数会提示你安装 - 打开编程语言的语言设置,右下角有个
rust
的图标,点击它,选择配置"rust"语言基础设置
,新增如下配置,保存
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
"editor.formatOnSave": true
},
这样保存代码时就会自动格式化当前代码,
image.png
image.png
image.png
如果你要格式化整个项目,那还是用cargo fmt
执行吧,小心哈