P.FMT.07 枚举变体和结构体字段都应左对齐

【描述】

对于自定义了判别式的枚举体,和有字段的结构体而言,默认只需要左对齐就可以。

这个宽度可以设置为任意值,但默认是0

说明:此宽度并不是指插入多少空格,而是指需要对齐的字符长度。

【反例】

enum_discrim_align_threshold = 20 时。


#![allow(unused)]
fn main() {
// 不符合: 设置了变体长度最大是20
enum Foo {
    A   = 0,
    Bb  = 1,
    RandomLongVariantGoesHere = 10, // 注意,该变体长度已经超过了20,所以它不会被对齐
    Ccc = 2,
}

enum Bar {
    VeryLongVariantNameHereA = 0, // 注意,该变体长度已经超过了20,所以它不会被对齐
    VeryLongVariantNameHereBb = 1, // 注意,该变体长度已经超过了20,所以它不会被对齐
    VeryLongVariantNameHereCcc = 2,// 注意,该变体长度已经超过了20,所以它不会被对齐
}
}

enum_discrim_align_threshold = 50 时。


#![allow(unused)]
fn main() {
// 不符合: 因为通过更改配置值填充了空格
enum Foo {
    A                         = 0,
    Bb                        = 1,
    RandomLongVariantGoesHere = 10, // 注意,该变体长度未超过50,所以它会被对齐
    Ccc                       = 2,
}

enum Bar {
    VeryLongVariantNameHereA   = 0, // 注意,该变体长度未超过50,所以它会被对齐
    VeryLongVariantNameHereBb  = 1, // 注意,该变体长度未超过50,所以它会被对齐
    VeryLongVariantNameHereCcc = 2, // 注意,该变体长度未超过50,所以它会被对齐
}
}

【正例】


#![allow(unused)]
fn main() {
// 符合: 无论变体长度多长,都左对齐
enum Bar {
    A = 0,
    Bb = 1,
    RandomLongVariantGoesHere = 10,
    Ccc = 71,
}
// 符合
enum Bar {
    VeryLongVariantNameHereA = 0,
    VeryLongVariantNameHereBb = 1,
    VeryLongVariantNameHereCcc = 2,
}
}

【rustfmt 配置】

对应选项可选值是否 stable说明
enum_discrim_align_threshold0(默认)No具有判别式的枚举变体与其他变体进行垂直对齐的最大长度
struct_field_align_threshold0(默认)No结构体字段垂直对齐的最大长度