1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use std::sync::*;
use clojure::rust::*;
use intertrait::*;
use crate::*;
pub trait Number: IObject {
fn big_integer_value_o(&self) -> Object;
fn long_value_o(&self) -> Object;
fn int_value_o(&self) -> Object;
fn short_value_o(&self) -> Object;
fn byte_value_o(&self) -> Object;
fn double_value_o(&self) -> Object;
fn float_value_o(&self) -> Object;
fn usize_value_o(&self) -> Object;
fn big_integer_value(&self) -> i128;
fn long_value(&self) -> i64;
fn int_value(&self) -> i32;
fn short_value(&self) -> i16;
fn byte_value(&self) -> i8;
fn double_value(&self) -> f64;
fn float_value(&self) -> f32;
fn usize_value(&self) -> usize;
}
pub trait Numeric {}
pub trait Floating {}
pub trait Decimal {}
pub trait Ratio {}
number_def!(BigInteger, i128);
number_def!(Long, i64);
number_def!(Integer, i32);
number_def!(Short, i16);
number_def!(Byte, i8);
number_def!(Double, f64);
number_def!(Float, f32);
number_def!(Usize, usize);
#[test]
fn bidirectionnal_convert() {}