File tree 1 file changed +10
-0
lines changed
1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ macro_rules! impl_conversion {
25
25
#[ serde( untagged) ]
26
26
pub enum NTValue {
27
27
/// An integer value. This value stores both signed and unsigned integers in an `i64`
28
+ #[ serde( serialize_with = "integer_serializer" ) ]
28
29
Int ( i64 ) ,
29
30
Float ( f32 ) ,
30
31
/// A floating-point value. This value represents both single and double precision floats, and is stored in an `f64`
@@ -49,6 +50,15 @@ pub enum NTValue {
49
50
StringArray ( Vec < String > ) ,
50
51
}
51
52
53
+ pub fn integer_serializer < S : serde:: Serializer > ( i : & i64 , s : S ) -> Result < S :: Ok , S :: Error > {
54
+ let i = * i;
55
+ if i > 0 {
56
+ s. serialize_u64 ( i as u64 )
57
+ } else {
58
+ s. serialize_i64 ( i)
59
+ }
60
+ }
61
+
52
62
fn raw_serializer < S : serde:: Serializer > ( v : & Vec < u8 > , s : S ) -> Result < S :: Ok , S :: Error > {
53
63
s. serialize_bytes ( & v[ ..] )
54
64
}
You can’t perform that action at this time.
0 commit comments