json_syntax/serde/ser/
number.rs1use crate::{JsonNumber, JsonNumberBuf, serde::NUMBER_TOKEN};
2use ser::{Serialize, Serializer};
3use serde::ser;
4
5impl Serialize for JsonNumber {
6 #[inline]
7 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
8 where
9 S: Serializer,
10 {
11 if let Some(v) = self.as_i64() {
12 serializer.serialize_i64(v)
13 } else if let Some(v) = self.as_u64() {
14 serializer.serialize_u64(v)
15 } else {
16 use serde::ser::SerializeStruct;
17 let mut s = serializer.serialize_struct(NUMBER_TOKEN, 1)?;
18 s.serialize_field(NUMBER_TOKEN, self.as_str())?;
19 s.end()
20 }
21 }
22}
23
24impl Serialize for JsonNumberBuf {
25 #[inline]
26 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
27 where
28 S: Serializer,
29 {
30 self.as_number().serialize(serializer)
31 }
32}