Rustfmt简单配置

1. Rustfmt概述

Rustfmt是用于格式化Rust代码的一款工具,我们可以通过修改配置文件让它根据我们想要的风格格式化代码。若想详细了解Rustfmt可以前往其github仓库

2. Rustfmt安装

如果Rust版本大于等于1.24,你可以直接在命令行输入 rustfmt --version查看Rustfmt的版本 ,如果没有安装的话,可以输入以下命令安装你想要的版本。

Stable版本

rustup component add rustfmt  # 安装
cargo fmt  # 格式化当前工作目录下的cargo工程代码

Nightly版本

rustup component add rustfmt --toolchain nightly
cargo +nightly fmt  # 用nightly版本的Rustfmt需要加上nightly

如果想要从源码编译Rustfmt,请参阅其github仓库

3. Rustfmt使用

在命令行输入 rustfmt filename即可直接格式化对应的Rust源文件,也可以直接输入 cargo fmt格式化整个crate。

4. Rustfmt配置文件

Rustfmt是高度可配置的,你可以在cargo工程目录中或者任意层级的父文件夹中创建一个名为rustfmt.toml.rustfmt.toml的文件,这个文件便是Rustfmt的配置文件,作用于其所在的当前文件夹以及所有子文件夹。

默认情况下,Rustfmt采用 Rust style guide中的风格。

以下是一些常见的配置

选项

默认值

可选值

Stable

说明

array_width

60

不大于max_width的数值

触发数组换行的宽度

binop_separator

"Front"

"Front"/"Back"

二元操作符换行时放前面还是放后面

blank_lines_lower_bound

0

unsigned int

item之间的最小空行

blank_lines_upper_bound

1

非负数

item之间的最大空行数

brace_style

"SameLineWhere"

"AlwaysNextLine", "PreferSameLine", "SameLineWhere"

大括号换行样式

chain_width

60

不大于max_width的正数

一条链式语句最大适应宽度

combine_control_expr

true

true/false

控制语句作为函数实参时是否紧随其后

comment_width

80

任何正数

注释的最大宽度,只有在 wrap_comments 为true时才有效

control_brace_style

"AlwaysSameLine"

"AlwaysNextLine", "AlwaysSameLine", "ClosingNextLine"

控制语句换行样式

edition

"2015"

"2015", "2018", "2021"

指定parser版本

empty_item_single_line

true

true/false

空item独占一行

fn_args_layout

"Tall"

"Compressed", "Tall", "Vertical"

函数参数展开样式

fn_call_width

60

不大于max_width的正数

函数调用的最大宽度

fn_single_line

false

true/false

单表达式函数占一行

format_code_in_doc_comments

false

true/false

格式化注释中的代码

format_macro_bodies

true

true/false

格式化宏里的代码

format_strings

false

true/false

必要时格式化字符串字面量

hard_tabs

false

true/false

使用tab缩进,空格对齐

ignore

-

-

跳过格式化的文件,使用如: ignore=["examples"]

imports_indent

"Block"

"Block", "Visual"

use语句缩进样式

imports_layout

"Mixed"

"Horizontal", "HorizontalVertical", "Mixed", "Vertical"

use语句样式

indent_style

"Block"

"Block", "Visual"

expression和item缩进样式

inline_attribute_width

0

正数

如果item和attribute宽度之和小于该值,则纳入同一行

match_arm_leading_pipes

"Never"

"Always", "Never", "Preserve"

match分支前是否包含 leading pipe

max_width

100

正数

每行的最大宽度

merge_derives

true

true/false

合并多行derives为一行

imports_granularity

"Preserve"

Preserve, Crate, Module, Item, One

use语句该如何合并或分割

newline_style

"Auto"

"Auto", "Native", "Unix", "Windows"

换行符

overflow_delimited_expr

false

true/false

当类似于struct、slices、arrays、和blocks/array-like的东西作为最后一个参数时,允许溢出而不是换行缩进

reorder_imports

true

true/false

根据字母顺序重排use语句

reorder_modules

true

true/false

根据字母顺序重排同一组modules

required_version

CARGO_PKG_VERSION

发布的工具版本

需要的最小版本

short_array_element_width_threshold

10

不大于max_width的正数

数组元素的宽度阈值被认为是“短”的的临界值

tab_spaces

4

正数

tab所占空格大小

where_single_line

false

true/false

强制 where 语句占一行

wrap_comments

true

true/false

将注释分开以适应该行

version

"One"

"One", "Two"

使用哪个版本的规则格式化代码。

笔者水平有限,如有错误,请直接指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值