Skip to content

Commit e74773f

Browse files
committed
Added helper functions to Number
1 parent 6ab60f7 commit e74773f

File tree

2 files changed

+59
-9
lines changed

2 files changed

+59
-9
lines changed

src/models/json_value.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@ use std::{collections::HashMap, convert::From};
44
impl From<serde_json::Number> for Number {
55
fn from(value: serde_json::Number) -> Self {
66
if value.is_f64() {
7-
Number::Decimal(value.as_f64().unwrap())
7+
Number::Float(value.as_f64().unwrap())
88
} else if value.is_i64() {
9-
Number::SignedInteger(value.as_i64().unwrap())
9+
Number::NegInt(value.as_i64().unwrap())
1010
} else {
11-
Number::UnsignedInteger(value.as_u64().unwrap())
11+
Number::PosInt(value.as_u64().unwrap())
1212
}
1313
}
1414
}
1515

1616
impl Into<serde_json::Number> for Number {
1717
fn into(self) -> serde_json::Number {
1818
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(),
2222
}
2323
}
2424
}

src/models/value.rs

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,59 @@ use std::collections::HashMap;
22

33
#[derive(Debug, Clone, PartialEq)]
44
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+
}
858
}
959

1060
#[derive(Debug, Clone, PartialEq)]

0 commit comments

Comments
 (0)