rkyv_test/impls/core/
time.rs1use 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}