1use crate::{Bits, Uint};
3
4pub type U0 = Uint<0, 0>;
6
7pub type U1 = Uint<1, 1>;
9
10pub type U8 = Uint<8, 1>;
12
13pub type U16 = Uint<16, 1>;
15
16pub type U32 = Uint<32, 1>;
18
19pub type U64 = Uint<64, 1>;
21
22pub type U128 = Uint<128, 2>;
24
25macro_rules! bit_alias {
26 ($($name:ident($bits:expr, $limbs:expr);)*) => {$(
27 #[doc = concat!("[`Bits`] for `", stringify!($bits),"` bits.")]
28 pub type $name = Bits<$bits, $limbs>;
29 )*};
30}
31
32bit_alias! {
33 B0(0, 0);
34 B1(1, 1);
35 B8(8, 1);
36 B16(16, 1);
37 B32(32, 1);
38 B64(64, 1);
39 B128(128, 2);
40}
41
42macro_rules! alias {
43 ($($uname:ident $bname:ident ($bits:expr, $limbs:expr);)*) => {$(
44 #[doc = concat!("[`Uint`] for `", stringify!($bits),"` bits.")]
45 pub type $uname = Uint<$bits, $limbs>;
46 #[doc = concat!("[`Bits`] for `", stringify!($bits),"` bits.")]
47 pub type $bname = Bits<$bits, $limbs>;
48 )*};
49}
50
51alias! {
52 U160 B160 (160, 3);
53 U192 B192 (192, 3);
54 U256 B256 (256, 4);
55 U320 B320 (320, 5);
56 U384 B384 (384, 6);
57 U448 B448 (448, 7);
58 U512 B512 (512, 8);
59 U768 B768 (768, 12);
60 U1024 B1024 (1024, 16);
61 U2048 B2048 (2048, 32);
62 U4096 B4096 (4096, 64);
63}
64
65#[cfg(test)]
68mod tests {
69 use super::*;
70
71 #[test]
72 const fn instantiate_consts() {
73 let _ = (U0::ZERO, U0::MAX, B0::ZERO);
74 let _ = (U1::ZERO, U1::MAX, B1::ZERO);
75 let _ = (U8::ZERO, U8::MAX, B8::ZERO);
76 let _ = (U16::ZERO, U16::MAX, B16::ZERO);
77 let _ = (U32::ZERO, U32::MAX, B32::ZERO);
78 let _ = (U64::ZERO, U64::MAX, B64::ZERO);
79 let _ = (U128::ZERO, U128::MAX, B128::ZERO);
80 let _ = (U160::ZERO, U160::MAX, B160::ZERO);
81 let _ = (U192::ZERO, U192::MAX, B192::ZERO);
82 let _ = (U256::ZERO, U256::MAX, B256::ZERO);
83 let _ = (U320::ZERO, U320::MAX, B320::ZERO);
84 let _ = (U384::ZERO, U384::MAX, B384::ZERO);
85 let _ = (U448::ZERO, U448::MAX, B448::ZERO);
86 let _ = (U512::ZERO, U512::MAX, B512::ZERO);
87 let _ = (U768::ZERO, U768::MAX, B768::ZERO);
88 let _ = (U1024::ZERO, U1024::MAX, B1024::ZERO);
89 let _ = (U2048::ZERO, U2048::MAX, B2048::ZERO);
90 let _ = (U4096::ZERO, U4096::MAX, B4096::ZERO);
91 }
92}