bnum 0.11.0

Arbitrary, fixed size numeric types that extend the functionality of primitive numeric types.
Documentation
macro_rules! impls {
    ($Int: ident, $sign: ident) => {
        #[doc = doc::unchecked::impl_desc!()]
        impl<const N: usize> $Int<N> {
            crate::nightly::const_fns! {
                #[doc = doc::unchecked::unchecked_add!($sign)]
                #[must_use = doc::must_use_op!()]
                #[inline]
                pub const unsafe fn unchecked_add(self, rhs: Self) -> Self {
                    self.checked_add(rhs).unwrap_unchecked()
                }

                #[doc = doc::unchecked::unchecked_sub!($sign)]
                #[must_use = doc::must_use_op!()]
                #[inline]
                pub const unsafe fn unchecked_sub(self, rhs: Self) -> Self {
                    self.checked_sub(rhs).unwrap_unchecked()
                }

                #[doc = doc::unchecked::unchecked_mul!($sign)]
                #[must_use = doc::must_use_op!()]
                #[inline]
                pub const unsafe fn unchecked_mul(self, rhs: Self) -> Self {
                    self.checked_mul(rhs).unwrap_unchecked()
                }

                #[doc = doc::unchecked::unchecked_shl!($sign)]
                #[must_use = doc::must_use_op!()]
                #[inline]
                pub const unsafe fn unchecked_shl(self, rhs: crate::ExpType) -> Self {
                    self.checked_shl(rhs).unwrap_unchecked()
                }

                #[doc = doc::unchecked::unchecked_shr!($sign)]
                #[must_use = doc::must_use_op!()]
                #[inline]
                pub const unsafe fn unchecked_shr(self, rhs: crate::ExpType) -> Self {
                    self.checked_shr(rhs).unwrap_unchecked()
                }
            }
        }
    };
}

pub(crate) use impls;

#[cfg(test)]
macro_rules! tests {
    ($int: ty) => {
        use crate::test::{test_bignum, types::*};

        test_bignum! {
            function: unsafe <$int>::unchecked_add(a: $int, b: $int),
            skip: a.checked_add(b).is_none()
        }
        test_bignum! {
            function: unsafe <$int>::unchecked_sub(a: $int, b: $int),
            skip: a.checked_sub(b).is_none()
        }
        test_bignum! {
            function: unsafe <$int>::unchecked_mul(a: $int, b: $int),
            skip: a.checked_mul(b).is_none()
        }
        test_bignum! {
            function: unsafe <$int>::unchecked_shl(a: $int, b: u8),
            skip: a.checked_shl(b as u32).is_none()
        }
        test_bignum! {
            function: unsafe <$int>::unchecked_shr(a: $int, b: u8),
            skip: a.checked_shr(b as u32).is_none()
        }
    }
}

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