rkyv_test/impls/core/
time.rs

1use crate::{time::ArchivedDuration, Archive, Deserialize, Fallible, Serialize};
2use core::time::Duration;
3
4impl Archive for Duration {
5    type Archived = ArchivedDuration;
6    type Resolver = ();
7
8    #[inline]
9    unsafe fn resolve(&self, _: usize, _: Self::Resolver, out: *mut Self::Archived) {
10        ArchivedDuration::emplace(self.as_secs(), self.subsec_nanos(), out);
11    }
12}
13
14impl<S: Fallible + ?Sized> Serialize<S> for Duration {
15    #[inline]
16    fn serialize(&self, _: &mut S) -> Result<Self::Resolver, S::Error> {
17        Ok(())
18    }
19}
20
21impl<D: Fallible + ?Sized> Deserialize<Duration, D> for ArchivedDuration {
22    #[inline]
23    fn deserialize(&self, _: &mut D) -> Result<Duration, D::Error> {
24        Ok(Duration::new(self.as_secs(), self.subsec_nanos()))
25    }
26}
27
28impl From<ArchivedDuration> for Duration {
29    #[inline]
30    fn from(duration: ArchivedDuration) -> Self {
31        Self::new(duration.as_secs(), duration.subsec_nanos())
32    }
33}