arc_number/utils/
mod.rs

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}