bnum 0.11.0

Arbitrary, fixed size numeric types that extend the functionality of primitive numeric types.
Documentation
#[cfg(test)]
macro_rules! tests {
    ($($int: ty), *) => {
        use crate::test::types::*;
        use crate::test;
        #[allow(unused_imports)]
        use crate::test::types::*;
        use crate::cast::{CastTo, CastFrom};

        use crate::test::cast_types::*;

        $(
            test::test_from! {
                function: <$int as CastFrom>::cast_from,
                from_types: (u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, f32, f64, bool, char, UTESTD8, UTESTD16, UTESTD32, UTESTD64, TestUint1, TestUint2, TestUint3, TestUint4, TestUint5, TestUint6, TestUint7, TestUint8, TestUint9, TestUint10, ITESTD8, ITESTD16, ITESTD32, ITESTD64, TestInt1, TestInt2, TestInt3, TestInt4, TestInt5, TestInt6, TestInt7, TestInt8, TestInt9, TestInt10)
            }

            test::test_into! {
                function: <$int as CastTo>::cast_to,
                into_types: (u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, f32, f64)
            }

            crate::int::cast::test_cast_to_bigint!($int; UTESTD8, UTESTD16, UTESTD32, UTESTD64, TestUint1, TestUint2, TestUint3, TestUint4, TestUint5, TestUint6, TestUint7, TestUint8, ITESTD8, ITESTD16, ITESTD32, ITESTD64, TestInt1, TestInt2, TestInt3, TestInt4, TestInt5, TestInt6, TestInt7, TestInt8);
        )*
    };
}

#[cfg(test)]
pub(crate) use tests;

#[cfg(test)]
macro_rules! test_cast_to_bigint {
    ($primitive: ty; $($Int: ty), *) => {
        paste::paste! {
            quickcheck::quickcheck! {
                $(
                    #[allow(non_snake_case)]
                    fn [<quickcheck_ $primitive _CastTo_ $Int _cast_to>](a: $primitive) -> bool {
                        use crate::cast::CastTo;

                        let primitive = <$primitive as CastTo<$Int>>::cast_to(a);
                        let big = <[<$primitive:upper>] as CastTo<$Int>>::cast_to(Into::into(a));

                        primitive == big
                    }
                )*
            }
        }
    };
}

#[cfg(test)]
pub(crate) use test_cast_to_bigint;