Skip to main content

fastnum/
decimal.rs

1//! # Decimal numbers
2
3#[cfg(feature = "test-util")]
4#[doc(hidden)]
5pub mod extras;
6
7#[cfg(not(feature = "test-util"))]
8pub(crate) mod extras;
9
10#[cfg(feature = "serde")]
11pub mod serde;
12
13pub(crate) mod dec;
14pub(crate) mod doc;
15pub(crate) mod impls;
16pub(crate) mod round;
17pub(crate) mod udec;
18
19mod context;
20mod sign;
21mod signals;
22
23#[cfg(debug_assertions)]
24mod assertions;
25
26#[allow(dead_code)]
27pub(crate) mod utils;
28
29pub(crate) mod errors;
30
31#[macro_use]
32mod macros;
33
34pub use context::{Context, RoundingMode, SignalsTraps};
35pub use dec::Decimal;
36pub use errors::{DecimalError, ParseError};
37pub use sign::Sign;
38pub use signals::Signals;
39pub use udec::UnsignedDecimal;
40
41macro_rules! decimal_types {
42    ( $($bits: literal $u: ident $s: ident; ) *)  => {
43        $(
44            #[doc = doc::decimal_type_doc!($bits U)]
45            pub type $u = UnsignedDecimal::<{$bits / 64}>;
46
47            #[doc = doc::decimal_type_doc!($bits)]
48            pub type $s = Decimal::<{$bits / 64}>;
49        )*
50    };
51}
52
53decimal_types!(
54    64 UD64 D64;
55    128 UD128 D128;
56    256 UD256 D256;
57    512 UD512 D512;
58    1024 UD1024 D1024;
59    // 2048 UD2048 D2048;
60    // 4096 UD4096 D4096;
61    // 8192 UD8192 D8192;
62);