#枚举 #变体 #等于 #derive # #derive-debug

enum_variant_eq

确定枚举只具有变体相等的属性

1个不稳定版本

0.1.0 2023年3月24日

#6 in #枚举

MIT许可证

6KB
79

确定枚举只具有变体相等的属性

示例

use enum_variant_eq::{*,enum_variant_eq_derive::*};

#[derive(Debug, EnumVariantEq)]
enum TestEnum {
    Unit,
    EmptyUnNamed(),
    UnNamed(i8),
    UnNamed2(i8, u8),
    EmptyNamed {},
    Named { x: i8 },
    Named2 { x: i8, y: u8 },
}
use TestEnum::*;
assert!(Unit.enum_variant_eq(&Unit));
assert!(UnNamed(5).enum_variant_eq(&UnNamed(8)));
assert!(Named { x: 5 }.enum_variant_eq(&Named { x: 8 }));

错误

EnumVariantEq仅适用于枚举。如果违反此条件,编译将崩溃

#[derive(EnumVariantEq)]
struct S;
error: #[derive(Debug, EnumVariantEq)]
    |                  ^^^^^^^^^^^^^
    = help: message: Type Is Not Enum

其他

构建Ast错误

依赖关系

~1.5MB
~35K SLoC