lib 0.0.3-0

LIB: Math and container utilities for Rust. Notice: study purpose, not production ready.
Documentation
pub trait AddId: Sized {
    const ZERO: Self;
}

macro_rules! impl_add_id_int {
    ($($t:ty),* $(,)?) => {
        $(
            impl AddId for $t {
                const ZERO: Self = 0;
            }
        )*
    };
}

macro_rules! impl_add_id_float {
    ($($t:ty),* $(,)?) => {
        $(
            impl AddId for $t {
                const ZERO: Self = 0.0;
            }
        )*
    };
}
impl_add_id_int!(i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize);
impl_add_id_float!(f32, f64);

pub trait IsAddId:AddId+PartialEq {
    fn is_zero(&self) -> bool {
        self == &Self::ZERO
    }

    fn not_zero(&self) -> bool {
        !self.is_zero()
    }
}

macro_rules! impl_is_add_id {
    ($($t:ty),* $(,)?) => {
        $(
            impl IsAddId for $t {
                fn is_zero(&self) -> bool {
                    self == &Self::ZERO
                }
            }
        )*
    };
}
impl_is_add_id!(i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize,f32, f64);