lib

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

serde_ext.rs (669B)


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