1mod number_from;
2mod number_impls;
3mod number_into;
4mod number_traits;
5
6use bigdecimal::BigDecimal;
7use num::{BigInt, BigUint, FromPrimitive, ToPrimitive, Zero};
8use std::{
9 cmp::Ordering,
10 convert::TryFrom,
11 fmt::{self, Debug, Display, Formatter},
12 ops::Deref,
13};
14
15#[derive(Debug, Clone)]
16pub enum NumberKind {
17 InlineInteger(usize),
18 InlineDecimal(f64),
19 BigInteger(BigInt),
20 BigDecimal(BigDecimal),
21}
22
23#[derive(Debug, Clone, Eq, PartialEq)]
24pub struct Number {
25 handler: Option<String>,
26 value: NumberKind,
27}
28
29#[test]
30fn check_size() {
31 assert_eq!(std::mem::size_of::<f64>(), 8);
32 assert_eq!(std::mem::size_of::<u64>(), 8);
33 assert_eq!(std::mem::size_of::<u128>(), 16);
34 assert_eq!(std::mem::size_of::<BigInt>(), 32);
35 assert_eq!(std::mem::size_of::<BigDecimal>(), 40);
36 assert_eq!(std::mem::size_of::<NumberKind>(), 48);
37 assert_eq!(std::mem::size_of::<Number>(), 72);
38}