#枚举 #相等性 #宏推导 #推导 # #部分相等

nightly varianteq

通过忽略字段推导枚举变体的相等性

7个版本 (4个重大更新)

0.5.0 2019年2月10日
0.4.1 2018年6月2日
0.4.0 2018年5月9日
0.3.0 2018年5月6日
0.1.1 2018年4月22日

#1122过程宏

MIT 协议

6KB

VariantEq

Latest Version Rust Documentation Build Status

此crate提供了一个宏来实现枚举变体的相等性。

如果两个枚举变体来自同一枚举的同一变体,则它们是相等的,无论它们包含的字段值如何。

#[derive(VariantEq)]
enum Enum {
    Variant,
}

示例

#[macro_use]
extern crate varianteq;

#[derive(Debug, VariantEq)]
enum E {
    A(i32),
    B(i32),
    C(u32, bool),
}

fn main() {
    assert_eq!(E::A(1), E::A(2));
    assert_ne!(E::A(1), E::B(1));
    assert_ne!(E::A(1), E::C(1, false));
}

错误

VariantEq 宏仅适用于枚举,如果在结构体上使用将导致编译错误。

#[derive(VariantEq)]
struct S;
error: #[derive(VariantEq)] is only defined for enums

依赖项

~2MB
~47K SLoC