/rust/registry/src/index.crates.io-1949cf8c6b5b557f/revision-0.14.0/src/implementations/duration.rs
Line | Count | Source |
1 | | use crate::DeserializeRevisioned; |
2 | | use crate::SerializeRevisioned; |
3 | | |
4 | | use super::super::Error; |
5 | | use super::super::Revisioned; |
6 | | use std::time::Duration; |
7 | | |
8 | | impl SerializeRevisioned for Duration { |
9 | | #[inline] |
10 | 0 | fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> { |
11 | 0 | self.as_secs().serialize_revisioned(writer)?; |
12 | 0 | self.subsec_nanos().serialize_revisioned(writer) |
13 | 0 | } Unexecuted instantiation: <core::time::Duration as revision::SerializeRevisioned>::serialize_revisioned::<alloc::vec::Vec<u8>> Unexecuted instantiation: <core::time::Duration as revision::SerializeRevisioned>::serialize_revisioned::<_> |
14 | | } |
15 | | |
16 | | impl DeserializeRevisioned for Duration { |
17 | | #[inline] |
18 | 0 | fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> { |
19 | 0 | let secs = u64::deserialize_revisioned(reader)?; |
20 | 0 | let nanos = u32::deserialize_revisioned(reader)?; |
21 | 0 | Ok(Duration::new(secs, nanos)) |
22 | 0 | } Unexecuted instantiation: <core::time::Duration as revision::DeserializeRevisioned>::deserialize_revisioned::<&[u8]> Unexecuted instantiation: <core::time::Duration as revision::DeserializeRevisioned>::deserialize_revisioned::<_> |
23 | | } |
24 | | |
25 | | impl Revisioned for Duration { |
26 | | #[inline] |
27 | 0 | fn revision() -> u16 { |
28 | 0 | 1 |
29 | 0 | } |
30 | | } |
31 | | |
32 | | #[cfg(test)] |
33 | | mod tests { |
34 | | use crate::implementations::assert_bincode_compat; |
35 | | |
36 | | use super::*; |
37 | | |
38 | | #[test] |
39 | | fn test_string() { |
40 | | let val = Duration::from_secs(604800); |
41 | | let mut mem: Vec<u8> = vec![]; |
42 | | val.serialize_revisioned(&mut mem).unwrap(); |
43 | | assert_eq!(mem.len(), 6); |
44 | | let out = <Duration as DeserializeRevisioned>::deserialize_revisioned(&mut mem.as_slice()) |
45 | | .unwrap(); |
46 | | assert_eq!(val, out); |
47 | | } |
48 | | |
49 | | #[test] |
50 | | fn bincode_compat() { |
51 | | assert_bincode_compat(&Duration::ZERO); |
52 | | assert_bincode_compat(&Duration::MAX); |
53 | | assert_bincode_compat(&Duration::new(u64::MAX, 0)); |
54 | | assert_bincode_compat(&Duration::new(0, 999_999_999)); |
55 | | } |
56 | | } |