injective_std/serde/
mod.rs1pub mod as_str {
2 use serde::{de, Deserialize, Deserializer, Serializer};
3 use std::{fmt::Display, str::FromStr};
4
5 pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
6 where
7 T: FromStr,
8 T::Err: Display,
9 D: Deserializer<'de>,
10 {
11 let s = String::deserialize(deserializer)?;
12 T::from_str(&s).map_err(de::Error::custom)
13 }
14
15 pub fn serialize<S, T>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
16 where
17 S: Serializer,
18 T: Display,
19 {
20 serializer.serialize_str(&value.to_string())
21 }
22}