fastnum/decimal/dec/extras/
serde.rs1mod visitors;
2
3use serde::{self, de, ser};
4
5use crate::decimal::{extras::serde::DeserializeMode, Decimal};
6
7impl<const N: usize> ser::Serialize for Decimal<N> {
8 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
9 where
10 S: ser::Serializer,
11 {
12 serializer.collect_str(&self)
13 }
14}
15
16impl<'de, const N: usize> de::Deserialize<'de> for Decimal<N> {
17 fn deserialize<D>(d: D) -> Result<Self, D::Error>
18 where
19 D: de::Deserializer<'de>,
20 {
21 const MODE: DeserializeMode = DeserializeMode::default();
22
23 match MODE {
24 DeserializeMode::Strict => d.deserialize_str(visitors::strict::Visitor::<N>::default()),
25 DeserializeMode::Stringify => {
26 d.deserialize_any(visitors::stringify::Visitor::<N>::default())
27 }
28 DeserializeMode::Any => d.deserialize_any(visitors::any::Visitor::<N>::default()),
29 }
30 }
31}