1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use crate::{ ibig::IBig, primitive::Sign::{self, *}, }; use core::ops::Neg; impl Neg for Sign { type Output = Sign; fn neg(self) -> Sign { match self { Positive => Negative, Negative => Positive, } } } impl Neg for IBig { type Output = IBig; fn neg(self) -> IBig { let (sign, mag) = self.into_sign_magnitude(); IBig::from_sign_magnitude(-sign, mag) } } impl Neg for &IBig { type Output = IBig; fn neg(self) -> IBig { -self.clone() } }