anyint 0.1.0

provides traits and structs for working with integers of any bit size
Documentation
extern crate test;
use crate::{integer::int, prelude::NonStandardIntegerCommon};
use test::{black_box, Bencher};

macro wrapping_bench($method:ident) {
    mod $method {
        use super::*;

        #[bench]
        fn int_u21(b: &mut Bencher) {
            b.iter(|| {
                (1..5000).fold(int::<u32, 21>::new(0), |old, new| {
                    black_box(old.$method(int::<u32, 21>::new(new)))
                })
            });
        }

        #[bench]
        fn std_u32(b: &mut Bencher) {
            b.iter(|| (1..5000).fold(0, |old: u32, new| black_box(old.$method(new))));
        }

        #[bench]
        fn int_i38(b: &mut Bencher) {
            b.iter(|| {
                (1..5000).fold(int::<i64, 38>::new(0), |old, new| {
                    black_box(old.$method(int::<i64, 38>::new(new)))
                })
            });
        }

        #[bench]
        fn std_i64(b: &mut Bencher) {
            b.iter(|| (1..5000).fold(0, |old: i64, new| black_box(old.$method(new))));
        }
    }
}

wrapping_bench!(wrapping_add);
wrapping_bench!(wrapping_sub);
wrapping_bench!(wrapping_mul);
wrapping_bench!(wrapping_div);
wrapping_bench!(wrapping_rem);