#variant #enums #match #methods #generate

is_variant

生成匹配枚举变体的方法

3个版本 (1个稳定版)

1.0.0 2020年12月7日
0.1.1 2020年12月7日
0.1.0 2020年12月7日

#129 in #match

MIT/Apache

6KB
53 代码行

is_variant

生成匹配枚举变体的方法。

示例

use is_variant::IsVariant;
 
#[derive(IsVariant)]
enum TestEnum {
    A,
    B(),
    C(i32, i32),
    D { _name: String, _age: i32 },
    VariantTest,
}
 
fn main() {
    let x = TestEnum::C(1, 2);
    assert!(x.is_c());
 
    let x = TestEnum::A;
    assert!(x.is_a());
 
    let x = TestEnum::B();
    assert!(x.is_b());
 
    let x = TestEnum::D {_name: "Jane Doe".into(), _age: 30 };
    assert!(x.is_d());

    let x = TestEnum::VariantTest;
    assert!(x.is_variant_test());
}

lib.rs:

生成匹配枚举变体的方法。

示例

use is_variant::IsVariant;

#[derive(IsVariant)]
enum TestEnum {
    A,
    B(),
    C(i32, i32),
    D { _name: String, _age: i32 },
    VariantTest,
}

fn main() {
    let x = TestEnum::C(1, 2);
    assert!(x.is_c());

    let x = TestEnum::A;
    assert!(x.is_a());

    let x = TestEnum::B();
    assert!(x.is_b());

    let x = TestEnum::D {_name: "Jane Doe".into(), _age: 30 };
    assert!(x.is_d());

    let x = TestEnum::VariantTest;
    assert!(x.is_variant_test());
}

依赖

~1.5MB
~35K SLoC