Coverage Report

Created: 2025-11-28 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}