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