Not

Derive Macro Not 

Source
#[derive(Not)]
{
    // Attributes available to this derive:
    #[not]
}
Expand description

Implements Not for enum.

use fieldless_enum_tools::Not;

// works without any attributes on enum with up to two variants
#[derive(Not, Debug, PartialEq, Eq)]
enum One {
    One
}

assert_eq!(!One::One, One::One);

#[derive(Not, Debug, PartialEq, Eq)]
enum More {
    One,
    Two
}

assert_eq!(!More::One, More::Two);
assert_eq!(!More::Two, More::One);

// requires attributes after
#[derive(Not, Debug, PartialEq, Eq)]
enum Multiple {
    #[not(OppositeOfOne)]
    One,
    #[not(OppositeOfTwo)]
    Two,
    #[not(One)]
    OppositeOfOne,
    #[not(Two)]
    OppositeOfTwo,
    #[not(Trap)]
    Trap
}

assert_eq!(!Multiple::One, Multiple::OppositeOfOne);
assert_eq!(!Multiple::OppositeOfTwo, Multiple::Two);
assert_eq!(!Multiple::Trap, Multiple::Trap);

§Attributes

§Variant attributes

#[not(...)]

Specifies which variant this variant will return when Not’ed