amalie 0.1.2

Mathmatical library written for rust and python
Documentation
use super::ZZ;
use std::cmp::Ordering;

impl PartialEq for ZZ {
    fn eq(&self, rhs: &Self) -> bool {
        self.v == rhs.v
    }
}
impl Eq for ZZ {}


impl PartialOrd for ZZ {
    fn partial_cmp(&self, rhs: &Self) -> Option<Ordering> {
        self.v.partial_cmp(&rhs.v)
    }
}
impl Ord for ZZ {
    fn cmp(&self, rhs: &Self) -> Ordering {
        self.v.cmp(&rhs.v)
    }
}

macro_rules! impl_compare {
    ($($type:ident),*) => {
        $(
            impl PartialEq<ZZ> for $type {
                fn eq(&self, rhs: &ZZ) -> bool {
                    &ZZ::from(*self) == rhs
                }
            }
            impl PartialEq<&ZZ> for $type {
                fn eq(&self, rhs: &&ZZ) -> bool {
                    &ZZ::from(*self) == *rhs
                }
            }
            impl PartialEq<$type> for ZZ {
                fn eq(&self, rhs: &$type) -> bool {
                     self == &ZZ::from(*rhs)
                }
            }
            impl PartialEq<$type> for &ZZ {
                fn eq(&self, rhs: &$type) -> bool {
                     self == &&ZZ::from(*rhs)
                }
            }

            impl PartialOrd<ZZ> for $type {
                fn partial_cmp(&self, rhs: &ZZ) -> Option<Ordering> {
                    ZZ::from(*self).partial_cmp(rhs)
                }
            }
            impl PartialOrd<&ZZ> for $type {
                fn partial_cmp(&self, rhs: &&ZZ) -> Option<Ordering> {
                    ZZ::from(*self).partial_cmp(*rhs)
                }
            }
            impl PartialOrd<$type> for ZZ {
                fn partial_cmp(&self, rhs: &$type) -> Option<Ordering> {
                    self.partial_cmp(&ZZ::from(*rhs))
                }
            }
            impl PartialOrd<$type> for &ZZ {
                fn partial_cmp(&self, rhs: &$type) -> Option<Ordering> {
                    (*self).partial_cmp(&ZZ::from(*rhs))
                }
            }
        )*
    }
}

impl_compare!(isize, i8, i16, i32, i64, i128, usize, u8, u16, u32, u64, u128);