File tree Expand file tree Collapse file tree 2 files changed +59
-9
lines changed Expand file tree Collapse file tree 2 files changed +59
-9
lines changed Original file line number Diff line number Diff line change @@ -4,21 +4,21 @@ use std::{collections::HashMap, convert::From};
4
4
impl From < serde_json:: Number > for Number {
5
5
fn from ( value : serde_json:: Number ) -> Self {
6
6
if value. is_f64 ( ) {
7
- Number :: Decimal ( value. as_f64 ( ) . unwrap ( ) )
7
+ Number :: Float ( value. as_f64 ( ) . unwrap ( ) )
8
8
} else if value. is_i64 ( ) {
9
- Number :: SignedInteger ( value. as_i64 ( ) . unwrap ( ) )
9
+ Number :: NegInt ( value. as_i64 ( ) . unwrap ( ) )
10
10
} else {
11
- Number :: UnsignedInteger ( value. as_u64 ( ) . unwrap ( ) )
11
+ Number :: PosInt ( value. as_u64 ( ) . unwrap ( ) )
12
12
}
13
13
}
14
14
}
15
15
16
16
impl Into < serde_json:: Number > for Number {
17
17
fn into ( self ) -> serde_json:: Number {
18
18
match self {
19
- Number :: SignedInteger ( s) => serde_json:: Number :: from ( s) ,
20
- Number :: UnsignedInteger ( u) => serde_json:: Number :: from ( u) ,
21
- Number :: Decimal ( d) => serde_json:: Number :: from_f64 ( d) . unwrap ( ) ,
19
+ Number :: NegInt ( s) => serde_json:: Number :: from ( s) ,
20
+ Number :: PosInt ( u) => serde_json:: Number :: from ( u) ,
21
+ Number :: Float ( d) => serde_json:: Number :: from_f64 ( d) . unwrap ( ) ,
22
22
}
23
23
}
24
24
}
Original file line number Diff line number Diff line change @@ -2,9 +2,59 @@ use std::collections::HashMap;
2
2
3
3
#[ derive( Debug , Clone , PartialEq ) ]
4
4
pub enum Number {
5
- SignedInteger ( i64 ) ,
6
- UnsignedInteger ( u64 ) ,
7
- Decimal ( f64 ) ,
5
+ PosInt ( u64 ) ,
6
+ NegInt ( i64 ) ,
7
+ Float ( f64 ) ,
8
+ }
9
+
10
+ impl Number {
11
+ pub fn is_i64 ( & self ) -> bool {
12
+ if let Number :: NegInt ( _) = self {
13
+ true
14
+ } else {
15
+ false
16
+ }
17
+ }
18
+
19
+ pub fn as_i64 ( & self ) -> Option < i64 > {
20
+ if let Number :: NegInt ( num) = self {
21
+ Some ( * num)
22
+ } else {
23
+ None
24
+ }
25
+ }
26
+
27
+ pub fn is_u64 ( & self ) -> bool {
28
+ if let Number :: PosInt ( _) = self {
29
+ true
30
+ } else {
31
+ false
32
+ }
33
+ }
34
+
35
+ pub fn as_u64 ( & self ) -> Option < u64 > {
36
+ if let Number :: PosInt ( num) = self {
37
+ Some ( * num)
38
+ } else {
39
+ None
40
+ }
41
+ }
42
+
43
+ pub fn is_f64 ( & self ) -> bool {
44
+ if let Number :: Float ( _) = self {
45
+ true
46
+ } else {
47
+ false
48
+ }
49
+ }
50
+
51
+ pub fn as_f64 ( & self ) -> Option < f64 > {
52
+ if let Number :: Float ( num) = self {
53
+ Some ( * num)
54
+ } else {
55
+ None
56
+ }
57
+ }
8
58
}
9
59
10
60
#[ derive( Debug , Clone , PartialEq ) ]
You can’t perform that action at this time.
0 commit comments