lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

serde_ext.rs (783B)


      1 #![cfg(feature = "serde")]
      2 
      3 #[cfg(not(feature = "std"))]
      4 use alloc::string::{String, ToString};
      5 #[cfg(feature = "std")]
      6 use std::string::String;
      7 
      8 use serde::{Deserialize, Deserializer, Serializer, de::Error as DeError};
      9 
     10 pub mod decimal_str {
     11     use super::*;
     12     use crate::RadrootsCoreDecimal;
     13     use core::str::FromStr;
     14 
     15     pub fn serialize<S: Serializer>(
     16         value: &RadrootsCoreDecimal,
     17         serializer: S,
     18     ) -> Result<S::Ok, S::Error> {
     19         serializer.serialize_str(&value.normalize().to_string())
     20     }
     21 
     22     pub fn deserialize<'de, D: Deserializer<'de>>(
     23         deserializer: D,
     24     ) -> Result<RadrootsCoreDecimal, D::Error> {
     25         let s = String::deserialize(deserializer)?;
     26         RadrootsCoreDecimal::from_str(&s).map_err(D::Error::custom)
     27     }
     28 }