dapi_grpc/
deserialization.rs

1pub use tenderdash_proto::serializers::bytes::{
2    base64string, hexstring, option_base64string, vec_base64string,
3};
4
5/// Serialize using [ToString] and deserialize using [FromStr](std::str::FromStr) trait implementations.
6pub mod from_to_string {
7    use std::{fmt::Display, str::FromStr};
8
9    use serde::{Deserialize, Serializer};
10
11    pub fn deserialize<'de, D, T>(deserializer: D) -> Result<T, D::Error>
12    where
13        D: serde::de::Deserializer<'de>,
14        T: FromStr,
15        T::Err: Display,
16    {
17        use serde::de::Error;
18
19        String::deserialize(deserializer).and_then(|string| {
20            string
21                .parse::<T>()
22                .map_err(|err| Error::custom(format!("custom dapi-grpc error: {}", err)))
23        })
24    }
25
26    /// Serialize from T into string
27    pub fn serialize<S, T>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
28    where
29        S: Serializer,
30        T: ToString,
31    {
32        serializer.serialize_str(&value.to_string())
33    }
34}