tendermint/serializers/
apphash.rs

1//! AppHash serialization with validation
2
3use core::str::FromStr;
4
5use alloc::borrow::Cow;
6
7use serde::{de, Deserialize, Deserializer, Serializer};
8
9use crate::{prelude::*, AppHash};
10
11/// Deserialize hexstring into AppHash
12pub fn deserialize<'de, D>(deserializer: D) -> Result<AppHash, D::Error>
13where
14    D: Deserializer<'de>,
15{
16    let hexstring = Option::<Cow<'_, str>>::deserialize(deserializer)?.unwrap_or(Cow::Borrowed(""));
17    AppHash::from_str(&hexstring).map_err(de::Error::custom)
18}
19
20/// Serialize from AppHash into hexstring
21pub fn serialize<S>(value: &AppHash, serializer: S) -> Result<S::Ok, S::Error>
22where
23    S: Serializer,
24{
25    // Serialize as Option<String> for symmetry with deserialize
26    serializer.serialize_some(&value.to_string())
27}