Derive the equality of enum variants ignoring fields
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

VariantEq

Latest Version Rust Documentation Build Status

This crate provides a macro to implement equality of enum variants.

Two enum variants are equal if they are the same variant from the same enum, regardless of the values of the fields each variant contains.

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

Examples

#[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));
}

Errors

The VariantEq macro only applies to enums and will cauase a compilation error if used on structs.

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