P.FMT.08 函数参数超过五个或导入模块个数超过四个需换行
【描述】
- 五个以内函数参数可以置于一行,超过五个则使用「块」状缩进。
- 导入模块每行超过四个,则换行。
【反例】
当 rustfmt 配置型 fn_args_layout
和 imports_layout
未使用默认值:
#![allow(unused)] fn main() { trait Lorem { fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet); fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) { // body } // 不符合: 超过五个参数未使用块状缩进 fn lorem( ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur, adipiscing: Adipiscing, elit: Elit, ); fn lorem( ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur, adipiscing: Adipiscing, elit: Elit, ) { // body } } use foo::{xxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz}; // 不符合: 模块换行即可,无需使用块状缩进 use foo::{ aaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb, cccccccccccccccccc, dddddddddddddddddd, eeeeeeeeeeeeeeeeee, ffffffffffffffffff, }; }
【正例】
当 rustfmt 配置项 fn_args_layout
和 imports_layout
使用默认值时:
#![allow(unused)] fn main() { trait Lorem { fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur); fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) { // body } // 符合 fn lorem( ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur, adipiscing: Adipiscing, elit: Elit, ); // 符合 fn lorem( ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur, adipiscing: Adipiscing, elit: Elit, ) { // body } } use foo::{xxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz}; // 符合 use foo::{ aaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb, cccccccccccccccccc, dddddddddddddddddd, eeeeeeeeeeeeeeeeee, }; }
【rustfmt 配置】
对应选项 | 可选值 | 是否 stable | 说明 |
---|---|---|---|
fn_args_layout | Tall(默认) | Yes | 函数参数五个或以内可以一行,超过五个则使用块状缩进 |
imports_layout | Mixed(默认) | No | 导入模块每行超过四个则换行 |