#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::Neg; #[derive(Debug, PartialEq)] enum Sign { Negative, Zero, Positive, } impl Neg for Sign { type Output = Self; fn neg(self) -> Self::Output { match self { Sign::Negative => Sign::Positive, Sign::Zero => Sign::Zero, Sign::Positive => Sign::Negative, } } } fn main() { assert_eq!(- Sign::Positive, Sign::Negative); assert_eq!(- Sign::Negative, Sign::Positive); assert_eq!(- Sign::Zero, Sign::Zero); }