1pub mod as_string {
7 use serde::de::Error;
8 use serde::{
9 Deserialize,
10 Deserializer,
11 Serializer,
12 };
13
14 pub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
15 where
16 T: std::fmt::Display,
17 S: Serializer,
18 {
19 serializer.serialize_str(value.to_string().as_str())
20 }
21
22 pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
23 where
24 T: std::str::FromStr,
25 D: Deserializer<'de>,
26 {
27 let string = String::deserialize(deserializer)?;
28 string
29 .parse()
30 .map_err(|_| D::Error::custom("Input is not valid"))
31 }
32}