Skip to main content

json_syntax/serde/ser/
number.rs

1use 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}