Coverage Report

Created: 2025-02-21 07:11

/rust/registry/src/index.crates.io-6f17d22bba15001f/revision-0.10.0/src/implementations/tuple.rs
Line
Count
Source (jump to first uncovered line)
1
use super::super::Error;
2
use super::super::Revisioned;
3
4
macro_rules! impl_tuple {
5
  ($($n:ident),*$(,)?) => {
6
    impl_tuple!{@marker $($n,)*}
7
  };
8
9
  ($($n:ident,)* @marker $head:ident, $($tail:ident,)*) => {
10
    impl<$($n),*> Revisioned for ($($n,)*)
11
      where $($n: Revisioned),*
12
    {
13
0
      fn revision() -> u16{
14
0
        1
15
0
      }
Unexecuted instantiation: <() as revision::Revisioned>::revision
Unexecuted instantiation: <(_,) as revision::Revisioned>::revision
Unexecuted instantiation: <(_, _) as revision::Revisioned>::revision
Unexecuted instantiation: <(_, _, _) as revision::Revisioned>::revision
Unexecuted instantiation: <(_, _, _, _) as revision::Revisioned>::revision
Unexecuted instantiation: <(_, _, _, _, _) as revision::Revisioned>::revision
16
17
      #[inline]
18
      #[allow(non_snake_case)]
19
0
      fn serialize_revisioned<W: std::io::Write>(&self, _writer: &mut W) -> Result<(), Error> {
20
0
        let ($(ref $n,)*) = *self;
21
0
        $(
22
0
          $n.serialize_revisioned(_writer)?;
23
0
        )*
24
0
        Ok(())
25
0
      }
Unexecuted instantiation: <() as revision::Revisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <(_,) as revision::Revisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <(_, _) as revision::Revisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _) as revision::Revisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _, _) as revision::Revisioned>::serialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _, _, _) as revision::Revisioned>::serialize_revisioned::<_>
26
27
      #[inline]
28
      #[allow(non_snake_case)]
29
0
      fn deserialize_revisioned<R: std::io::Read>(_reader: &mut R) -> Result<Self, Error> {
30
0
        $(
31
0
          let $n = Revisioned::deserialize_revisioned(_reader)?;
32
0
        )*
33
0
        Ok(($($n,)*))
34
0
      }
Unexecuted instantiation: <() as revision::Revisioned>::deserialize_revisioned::<_>
Unexecuted instantiation: <(_,) as revision::Revisioned>::deserialize_revisioned::<_>
Unexecuted instantiation: <(_, _) as revision::Revisioned>::deserialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _) as revision::Revisioned>::deserialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _, _) as revision::Revisioned>::deserialize_revisioned::<_>
Unexecuted instantiation: <(_, _, _, _, _) as revision::Revisioned>::deserialize_revisioned::<_>
35
    }
36
37
    impl_tuple!{$($n,)* $head, @marker $($tail,)*}
38
39
  };
40
  ($($n:ident,)* @marker) => {
41
    impl<$($n),*> Revisioned for ($($n),*)
42
      where $($n: Revisioned),*
43
    {
44
0
      fn revision() -> u16{
45
0
        1
46
0
      }
47
48
      #[inline]
49
      #[allow(non_snake_case)]
50
0
      fn serialize_revisioned<W: std::io::Write>(&self, _writer: &mut W) -> Result<(), Error> {
51
0
        let ($(ref $n),*) = self;
52
        $(
53
0
          $n.serialize_revisioned(_writer)?;
54
        )*
55
0
        Ok(())
56
0
      }
57
58
      #[inline]
59
      #[allow(non_snake_case)]
60
0
      fn deserialize_revisioned<R: std::io::Read>(_reader: &mut R) -> Result<Self, Error> {
61
        $(
62
0
          let $n = Revisioned::deserialize_revisioned(_reader)?;
63
        )*
64
0
        Ok(($($n),*))
65
0
      }
66
    }
67
  };
68
}
69
70
impl_tuple! { A,B,C,D,E,F }
71
72
#[cfg(test)]
73
mod tests {
74
75
  use crate::implementations::assert_bincode_compat;
76
77
  use super::Revisioned;
78
79
  #[test]
80
  fn test_tuple_2() {
81
    let val = (String::from("test"), true);
82
    assert_bincode_compat(&val);
83
    let mut mem: Vec<u8> = vec![];
84
    val.serialize_revisioned(&mut mem).unwrap();
85
    assert_eq!(mem.len(), 6);
86
    let out =
87
      <(String, bool) as Revisioned>::deserialize_revisioned(&mut mem.as_slice()).unwrap();
88
    assert_eq!(val, out);
89
  }
90
91
  #[test]
92
  fn test_tuple_3() {
93
    let val = (String::from("test"), true, 1419247293847192847.13947134978139487);
94
    assert_bincode_compat(&val);
95
    let mut mem: Vec<u8> = vec![];
96
    val.serialize_revisioned(&mut mem).unwrap();
97
    assert_eq!(mem.len(), 14);
98
    let out = <(String, bool, f64) as Revisioned>::deserialize_revisioned(&mut mem.as_slice())
99
      .unwrap();
100
    assert_eq!(val, out);
101
  }
102
103
  #[test]
104
  fn test_tuple_4() {
105
    let val = (String::from("test"), true, 1419247293847192847.13947134978139487, Some('t'));
106
    assert_bincode_compat(&val);
107
    let mut mem: Vec<u8> = vec![];
108
    val.serialize_revisioned(&mut mem).unwrap();
109
    assert_eq!(mem.len(), 16);
110
    let out = <(String, bool, f64, Option<char>) as Revisioned>::deserialize_revisioned(
111
      &mut mem.as_slice(),
112
    )
113
    .unwrap();
114
    assert_eq!(val, out);
115
  }
116
117
  #[test]
118
  fn test_tuple_5() {
119
    let val = (
120
      String::from("test"),
121
      true,
122
      1419247293847192847.13947134978139487,
123
      Some('t'),
124
      vec![4u8, 19u8, 133u8],
125
    );
126
    assert_bincode_compat(&val);
127
    let mut mem: Vec<u8> = vec![];
128
    val.serialize_revisioned(&mut mem).unwrap();
129
    assert_eq!(mem.len(), 20);
130
    let out =
131
      <(String, bool, f64, Option<char>, Vec<u8>) as Revisioned>::deserialize_revisioned(
132
        &mut mem.as_slice(),
133
      )
134
      .unwrap();
135
    assert_eq!(val, out);
136
  }
137
}