Skip to main content

fastnum/
bint.rs

1//! # Big Integers
2//!
3//! Under the hood [bnum](https://docs.rs/bnum/latest/bnum/) is currently used as the backend as most meeting the
4//! requirements.
5//! Subsequently, the implementation can be replaced in favor of its own
6//! implementation, which enables `SIMD`.
7
8// TODO
9pub(crate) mod bits;
10pub(crate) mod carrying;
11pub(crate) mod checked;
12pub(crate) mod cmp;
13pub(crate) mod consts;
14pub(crate) mod convert;
15pub(crate) mod doc;
16pub(crate) mod endian;
17pub(crate) mod impls;
18pub(crate) mod intrinsics;
19pub(crate) mod math;
20pub(crate) mod num;
21pub(crate) mod overflowing;
22pub(crate) mod saturating;
23pub(crate) mod strict;
24pub(crate) mod utils;
25pub(crate) mod widening;
26pub(crate) mod wrapping;
27
28#[macro_use]
29mod macros;
30
31#[cfg(debug_assertions)]
32mod assertions;
33
34mod error;
35mod int;
36mod uint;
37
38pub use error::ParseError;
39pub use int::Int;
40pub use uint::UInt;
41
42use crate::bint::doc::int_type_doc;
43
44macro_rules! int_types {
45    ( $($bits: literal $u: ident $s: ident; ) *)  => {
46        $(
47            #[doc = int_type_doc!($bits, "unsigned")]
48            pub type $u = UInt::<{$bits / 64}>;
49
50            #[doc = int_type_doc!($bits, "signed")]
51            pub type $s = Int::<{$bits / 64}>;
52        )*
53    };
54}
55
56int_types!(
57    64 U64 I64;
58    128 U128 I128;
59    256 U256 I256;
60    512 U512 I512;
61    1024 U1024 I1024;
62    // 2048 U2048 I2048;
63    // 4096 U4096 I4096;
64    // 8192 U8192 I8192;
65);