tendermint_proto/serializers/
time_duration.rs1use core::time::Duration;
3
4use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer};
5
6use crate::prelude::*;
7use crate::serializers::cow_str::CowStr;
8
9pub fn deserialize<'de, D>(deserializer: D) -> Result<Duration, D::Error>
11where
12 D: Deserializer<'de>,
13{
14 let value = CowStr::deserialize(deserializer)?
15 .parse::<u64>()
16 .map_err(|e| D::Error::custom(format!("{e}")))?;
17
18 Ok(Duration::from_nanos(value))
19}
20
21pub fn serialize<S>(value: &Duration, serializer: S) -> Result<S::Ok, S::Error>
23where
24 S: Serializer,
25{
26 format!("{}", value.as_nanos()).serialize(serializer)
27}