#枚举 #derive #variant #is

derive_is_enum_variant

自动为 is_dogis_cat 方法推导出 enum Pet { Dog, Cat }

2个版本

使用旧的Rust 2015

0.1.1 2017年9月14日
0.1.0 2017年9月14日

#2449Rust模式

Download history 2745/week @ 2024-03-14 2562/week @ 2024-03-21 3030/week @ 2024-03-28 2055/week @ 2024-04-04 3121/week @ 2024-04-11 3201/week @ 2024-04-18 3053/week @ 2024-04-25 2344/week @ 2024-05-02 2099/week @ 2024-05-09 2872/week @ 2024-05-16 2661/week @ 2024-05-23 2785/week @ 2024-05-30 1834/week @ 2024-06-06 3114/week @ 2024-06-13 3064/week @ 2024-06-20 2412/week @ 2024-06-27

10,767 每月下载量
28 个crate中使用 (8个直接使用)

Apache-2.0/MIT

12KB
135

derive_is_enum_variant

derive_is_enum_variant

Build Status

停止手动为你的 pub is_whatever(&self) -> bool 编写枚举 —— 这太痛苦了!只需使用 #[derive(is_enum_variant)] 代替!

用法

derive_is_enum_variant 添加到你的crate的 Cargo.toml

[dependencies]
derive_is_enum_variant = "<insert-latest-version-here>"

然后添加 #[derive(is_enum_variant)] 到你的 enum 定义中

#[macro_use]
extern crate derive_is_enum_variant;

#[derive(is_enum_variant)]
pub enum Pet {
    Doggo,
    Kitteh,
}

fn main() {
    let pet = Pet::Doggo;

    assert!(pet.is_doggo());
    assert!(!pet.is_kitteh());
}

自定义谓词名称

默认情况下,谓词名称为 is_snake_case_of_variant_name。您可以使用任何名称,只需使用 #[is_enum_variant(name = "..")] 代替


#[derive(is_enum_variant)]
pub enum Pet {
    #[is_enum_variant(name = "is_real_good_boy")]
    Doggo,
    Kitteh,
}

let pet = Pet::Doggo;
assert!(pet.is_real_good_boy());

跳过某些变体的谓词

如果您不希望为某个变体生成谓词,可以使用 #[is_enum_variant(skip)]


#[derive(is_enum_variant)]
pub enum Errors {
    Io(::std::io::Error),

    #[doc(hidden)]
    #[is_enum_variant(skip)]
    __NonExhaustive,
}

许可证

许可协议为以下之一

由您选择。

贡献

查看 CONTRIBUTING.md 以获取黑客技巧!

除非您明确声明,否则您提交给工作内容的任何贡献,根据Apache-2.0许可证定义,将以上述方式双许可,不附加任何额外条款或条件。

许可证:Apache-2.0/MIT

依赖项

~2.5MB
~49K SLoC