use core::ops::Neg;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Sign {
Positive,
Negative,
Zero,
}
impl Neg for Sign {
type Output = Sign;
fn neg(self) -> Sign {
match self {
Sign::Positive => Sign::Negative,
Sign::Negative => Sign::Positive,
Sign::Zero => Sign::Zero,
}
}
}
#[cfg(test)]
#[allow(
clippy::float_cmp,
clippy::cast_possible_truncation,
clippy::cast_precision_loss,
clippy::cast_possible_wrap,
clippy::range_plus_one,
clippy::no_effect_underscore_binding
)]
mod tests {
use super::*;
#[test]
fn neg_is_correct() {
assert_eq!(-Sign::Positive, Sign::Negative);
assert_eq!(-Sign::Negative, Sign::Positive);
assert_eq!(-Sign::Zero, Sign::Zero);
}
#[test]
fn sign_is_copy() {
let s = Sign::Positive;
let _a = s;
let _b = s; }
}