tenderdash_proto/serializers/
time_duration.rs1#[cfg(not(feature = "std"))]
3use core::time::Duration;
4#[cfg(feature = "std")]
5use std::time::Duration;
6
7use serde::{Deserialize, Deserializer, Serialize, Serializer, de::Error as _};
8
9use crate::prelude::*;
10
11pub fn deserialize<'de, D>(deserializer: D) -> Result<Duration, D::Error>
13where
14 D: Deserializer<'de>,
15{
16 let value = String::deserialize(deserializer)?
17 .parse::<u64>()
18 .map_err(|e| D::Error::custom(format!("{e}")))?;
19
20 Ok(Duration::from_nanos(value))
21}
22
23pub fn serialize<S>(value: &Duration, serializer: S) -> Result<S::Ok, S::Error>
25where
26 S: Serializer,
27{
28 format!("{}", value.as_nanos()).serialize(serializer)
29}