fixnum-approx-eq 0.1.0

Approximate equality checks & asserts for fixed-point precision numbers
Documentation
use fixnum::{ArithmeticError, FixedPoint, Precision};

pub trait Abs: Sized {
    fn trait_abs(self) -> Result<Self, fixnum::ArithmeticError>;
}

macro_rules! impl_abs {
    ($inner:ty) => {
        impl<P> Abs for FixedPoint<$inner, P>
        where
            P: Precision,
        {
            fn trait_abs(self) -> Result<Self, ArithmeticError> {
                self.abs()
            }
        }
    };
}

#[cfg(feature = "i16")]
impl_abs!(i16);
#[cfg(feature = "i32")]
impl_abs!(i32);
#[cfg(feature = "i64")]
impl_abs!(i64);
#[cfg(feature = "i128")]
impl_abs!(i128);

#[cfg(test)]
mod tests {
    use crate::traits::Abs;
    use fixnum::typenum::U18;
    use fixnum::FixedPoint;

    #[test]
    fn abs_works() {
        let f = FixedPoint::<i128, U18>::from_decimal(-12, -2).unwrap();
        dbg!(&f);
        let f_abs = <FixedPoint<i128, U18> as Abs>::trait_abs(f).unwrap();
        dbg!(&f_abs);
    }
}