tiny_json_rs/serializer/
serializers.rs1use crate::lexer::{StringType, Token, TokenType};
2use crate::mapper::Value;
3use crate::serializer::Serialize;
4use alloc::string::{String, ToString};
5use alloc::vec::Vec;
6
7impl Serialize for u8 {
8 fn serialize(&self) -> Value {
9 Value::Token(Token {
10 token_type: TokenType::Int,
11 literal: self.to_string(),
12 })
13 }
14}
15
16impl Serialize for u16 {
17 fn serialize(&self) -> Value {
18 Value::Token(Token {
19 token_type: TokenType::Int,
20 literal: self.to_string(),
21 })
22 }
23}
24
25impl Serialize for u32 {
26 fn serialize(&self) -> Value {
27 Value::Token(Token {
28 token_type: TokenType::Int,
29 literal: self.to_string(),
30 })
31 }
32}
33
34impl Serialize for u64 {
35 fn serialize(&self) -> Value {
36 Value::Token(Token {
37 token_type: TokenType::Int,
38 literal: self.to_string(),
39 })
40 }
41}
42
43impl Serialize for usize {
44 fn serialize(&self) -> Value {
45 Value::Token(Token {
46 token_type: TokenType::Int,
47 literal: self.to_string(),
48 })
49 }
50}
51
52impl Serialize for i8 {
53 fn serialize(&self) -> Value {
54 Value::Token(Token {
55 token_type: TokenType::Int,
56 literal: self.to_string(),
57 })
58 }
59}
60
61impl Serialize for i16 {
62 fn serialize(&self) -> Value {
63 Value::Token(Token {
64 token_type: TokenType::Int,
65 literal: self.to_string(),
66 })
67 }
68}
69
70impl Serialize for i32 {
71 fn serialize(&self) -> Value {
72 Value::Token(Token {
73 token_type: TokenType::Int,
74 literal: self.to_string(),
75 })
76 }
77}
78
79impl Serialize for i64 {
80 fn serialize(&self) -> Value {
81 Value::Token(Token {
82 token_type: TokenType::Int,
83 literal: self.to_string(),
84 })
85 }
86}
87
88impl Serialize for f32 {
89 fn serialize(&self) -> Value {
90 Value::Token(Token {
91 token_type: TokenType::Float,
92 literal: self.to_string(),
93 })
94 }
95}
96
97impl Serialize for f64 {
98 fn serialize(&self) -> Value {
99 Value::Token(Token {
100 token_type: TokenType::Float,
101 literal: self.to_string(),
102 })
103 }
104}
105
106impl Serialize for bool {
107 fn serialize(&self) -> Value {
108 Value::Token(Token {
109 token_type: TokenType::ReservedString,
110 literal: self.to_string(),
111 })
112 }
113}
114
115impl Serialize for String {
116 fn serialize(&self) -> Value {
117 Value::Token(Token {
118 token_type: TokenType::String(StringType::ComplexString),
119 literal: self.to_string(),
120 })
121 }
122}
123
124impl Serialize for char {
125 fn serialize(&self) -> Value {
126 Value::Token(Token {
127 token_type: TokenType::String(StringType::SimpleString),
128 literal: self.to_string(),
129 })
130 }
131}
132
133impl<T> Serialize for Option<T>
134where
135 T: Serialize,
136{
137 fn serialize(&self) -> Value {
138 match self {
139 Some(val) => val.serialize(),
140 None => Value::Token(Token {
141 token_type: TokenType::ReservedString,
142 literal: String::from("null"),
143 }),
144 }
145 }
146}
147
148impl<T> Serialize for Vec<T>
149where
150 T: Serialize,
151{
152 fn serialize(&self) -> Value {
153 let mut array = Vec::new();
154 for val in self {
155 array.push(val.serialize());
156 }
157 Value::Array(array)
158 }
159}