G.TYP.ENM.04 不宜在use语句中引入Enum的全部变体(variants)

【级别】 建议

【描述】

使用 Enum 的类型前缀可以使代码更加可读。

【反例】


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

fn main() {
// 不符合
use std::cmp::Ordering::*; // 这里导入了全部变体
foo(Less);
}

【正例】


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

fn main() {
// 符合
use std::cmp::Ordering;
foo(Ordering::Less)


}

【例外】

当枚举体非常多的时候,比如 oci_spec::Arch 中对应平台架构的枚举值,直接用 * 导入会更加方便。


#![allow(unused)]
fn main() {
// From:  https://github.com/alacritty/alacritty/blob/master/alacritty/src/config/bindings.rs#L368
#![allow(clippy::enum_glob_use)]
use oci_spec::Arch::*;

pub enum Arch {
    /// The native architecture.
    ScmpArchNative = 0x00000000,

    /// The x86 (32-bit) architecture.
    ScmpArchX86 = 0x40000003,

    /// The x86-64 (64-bit) architecture.
    ScmpArchX86_64 = 0xc000003e,

    // ... more 
}
}

【Lint 检测】

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