pub(crate) mod nanos_as_u64 {
use nautilus_core::UnixNanos;
use serde::{Deserialize, Deserializer, Serializer};
#[allow(clippy::trivially_copy_pass_by_ref)] pub(crate) fn serialize<S: Serializer>(
value: &UnixNanos,
serializer: S,
) -> Result<S::Ok, S::Error> {
serializer.serialize_u64(value.as_u64())
}
pub(crate) fn deserialize<'de, D: Deserializer<'de>>(
deserializer: D,
) -> Result<UnixNanos, D::Error> {
let raw = u64::deserialize(deserializer)?;
Ok(UnixNanos::from(raw))
}
}
pub(crate) mod opt_nanos_as_u64 {
use nautilus_core::UnixNanos;
use serde::{Deserialize, Deserializer, Serializer};
#[allow(clippy::ref_option)] pub(crate) fn serialize<S: Serializer>(
value: &Option<UnixNanos>,
serializer: S,
) -> Result<S::Ok, S::Error> {
match value {
Some(v) => serializer.serialize_some(&v.as_u64()),
None => serializer.serialize_none(),
}
}
pub(crate) fn deserialize<'de, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<UnixNanos>, D::Error> {
let raw: Option<u64> = Option::deserialize(deserializer)?;
Ok(raw.map(UnixNanos::from))
}
}