G.TYP.SCT.02 当结构体中有超过三个布尔类型的字段,宜将其独立为新的枚举类

【级别】 建议

【描述】

这样有助于提升 代码可读性和 API 。

【反例】


#![allow(unused)]
#![warn(clippy::struct_excessive_bools)]

fn main() {
// 不符合
struct S {
    name: String,
    is_pending: bool,
    is_processing: bool,
    is_finished: bool,
}
}

【正例】


#![allow(unused)]
#![warn(clippy::struct_excessive_bools)]
fn main() {
// 符合
struct S {
    name: String,
    state: State,
}

enum State {
    Pending,
    Processing,
    Finished,
}
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
struct_excessive_boolsyesnopedanticallow

该 lint 对应 clippy.toml 配置项:

# 用于配置函数可以拥有的 bool 类型参数最大数量,默认为 3。
max-struct-bools=3