use matched_enums::Matched;
#[derive(Matched, PartialEq, Eq, Debug, Ord, PartialOrd)]
#[matched_enum(value_type=isize)]
enum Signature {
#[matches(1..)]
Positive = 1,
#[matches(..=-1)]
Negative = -1,
#[matches(0..1)]
Zero = 0,
}
fn main() {
let sign = Signature::from(-42); assert!(sign == Signature::Negative); assert!(sign < Signature::Zero);
let sign = Signature::from(0);
assert!(sign < Signature::Positive);
assert!(sign == Signature::Zero);
assert!(sign > Signature::Negative);
}