#[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