protocol/types/
tuple.rs

1use crate::{hint, Parcel, Error, Settings};
2
3use std::io::prelude::*;
4
5impl<T0, T1> Parcel for (T0, T1)
6    where T0: Parcel, T1: Parcel
7{
8    const TYPE_NAME: &'static str = "(T0, T1)";
9
10    fn read_field(read: &mut dyn Read,
11                  settings: &Settings,
12                  _: &mut hint::Hints) -> Result<Self, Error> {
13        let v0 = T0::read(read, settings)?;
14        let v1 = T1::read(read, settings)?;
15        Ok((v0, v1))
16    }
17
18    fn write_field(&self, write: &mut dyn Write,
19                   settings: &Settings,
20                   _: &mut hint::Hints) -> Result<(), Error> {
21        self.0.write(write, settings)?;
22        self.1.write(write, settings)?;
23
24        Ok(())
25    }
26}
27
28impl<T0, T1, T2> Parcel for (T0, T1, T2)
29    where T0: Parcel, T1: Parcel, T2: Parcel
30{
31    const TYPE_NAME: &'static str = "(T0, T1, T2)";
32
33    fn read_field(read: &mut dyn Read,
34                  settings: &Settings,
35                  _: &mut hint::Hints) -> Result<Self, Error> {
36        let v0 = T0::read(read, settings)?;
37        let v1 = T1::read(read, settings)?;
38        let v2 = T2::read(read, settings)?;
39        Ok((v0, v1, v2))
40    }
41
42    fn write_field(&self, write: &mut dyn Write,
43                   settings: &Settings,
44                   _: &mut hint::Hints) -> Result<(), Error> {
45        self.0.write(write, settings)?;
46        self.1.write(write, settings)?;
47        self.2.write(write, settings)?;
48
49        Ok(())
50    }
51}
52
53impl<T0, T1, T2, T3> Parcel for (T0, T1, T2, T3)
54    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel
55{
56    const TYPE_NAME: &'static str = "(T0, T1, T2, T3)";
57
58    fn read_field(read: &mut dyn Read,
59                  settings: &Settings,
60                  _: &mut hint::Hints) -> Result<Self, Error> {
61        let v0 = T0::read(read, settings)?;
62        let v1 = T1::read(read, settings)?;
63        let v2 = T2::read(read, settings)?;
64        let v3 = T3::read(read, settings)?;
65        Ok((v0, v1, v2, v3))
66    }
67
68    fn write_field(&self, write: &mut dyn Write,
69                   settings: &Settings,
70                   _: &mut hint::Hints) -> Result<(), Error> {
71        self.0.write(write, settings)?;
72        self.1.write(write, settings)?;
73        self.2.write(write, settings)?;
74        self.3.write(write, settings)?;
75
76        Ok(())
77    }
78}
79
80impl<T0, T1, T2, T3, T4> Parcel for (T0, T1, T2, T3, T4)
81    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel
82{
83    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4)";
84
85    fn read_field(read: &mut dyn Read,
86                  settings: &Settings,
87                  _: &mut hint::Hints) -> Result<Self, Error> {
88        let v0 = T0::read(read, settings)?;
89        let v1 = T1::read(read, settings)?;
90        let v2 = T2::read(read, settings)?;
91        let v3 = T3::read(read, settings)?;
92        let v4 = T4::read(read, settings)?;
93        Ok((v0, v1, v2, v3, v4))
94    }
95
96    fn write_field(&self, write: &mut dyn Write,
97                   settings: &Settings,
98                   _: &mut hint::Hints) -> Result<(), Error> {
99        self.0.write(write, settings)?;
100        self.1.write(write, settings)?;
101        self.2.write(write, settings)?;
102        self.3.write(write, settings)?;
103        self.4.write(write, settings)?;
104
105        Ok(())
106    }
107}
108
109impl<T0, T1, T2, T3, T4, T5> Parcel for (T0, T1, T2, T3, T4, T5)
110    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
111          T5: Parcel,
112{
113    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5)";
114
115    fn read_field(read: &mut dyn Read,
116                  settings: &Settings,
117                  _: &mut hint::Hints) -> Result<Self, Error> {
118        let v0 = T0::read(read, settings)?;
119        let v1 = T1::read(read, settings)?;
120        let v2 = T2::read(read, settings)?;
121        let v3 = T3::read(read, settings)?;
122        let v4 = T4::read(read, settings)?;
123        let v5 = T5::read(read, settings)?;
124        Ok((v0, v1, v2, v3, v4, v5))
125    }
126
127    fn write_field(&self, write: &mut dyn Write,
128                   settings: &Settings,
129                   _: &mut hint::Hints) -> Result<(), Error> {
130        self.0.write(write, settings)?;
131        self.1.write(write, settings)?;
132        self.2.write(write, settings)?;
133        self.3.write(write, settings)?;
134        self.4.write(write, settings)?;
135        self.5.write(write, settings)?;
136
137        Ok(())
138    }
139}
140
141impl<T0, T1, T2, T3, T4, T5, T6> Parcel for (T0, T1, T2, T3, T4, T5, T6)
142    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
143          T5: Parcel, T6: Parcel,
144{
145    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5, T6)";
146
147    fn read_field(read: &mut dyn Read,
148                  settings: &Settings,
149                  _: &mut hint::Hints) -> Result<Self, Error> {
150        let v0 = T0::read(read, settings)?;
151        let v1 = T1::read(read, settings)?;
152        let v2 = T2::read(read, settings)?;
153        let v3 = T3::read(read, settings)?;
154        let v4 = T4::read(read, settings)?;
155        let v5 = T5::read(read, settings)?;
156        let v6 = T6::read(read, settings)?;
157        Ok((v0, v1, v2, v3, v4, v5, v6))
158    }
159
160    fn write_field(&self, write: &mut dyn Write,
161                   settings: &Settings,
162                   _: &mut hint::Hints) -> Result<(), Error> {
163        self.0.write(write, settings)?;
164        self.1.write(write, settings)?;
165        self.2.write(write, settings)?;
166        self.3.write(write, settings)?;
167        self.4.write(write, settings)?;
168        self.5.write(write, settings)?;
169        self.6.write(write, settings)?;
170
171        Ok(())
172    }
173}
174
175impl<T0, T1, T2, T3, T4, T5, T6, T7> Parcel for (T0, T1, T2, T3, T4, T5, T6, T7)
176    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
177          T5: Parcel, T6: Parcel, T7: Parcel,
178{
179    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5, T6, T7)";
180
181    fn read_field(read: &mut dyn Read,
182                  settings: &Settings,
183                  _: &mut hint::Hints) -> Result<Self, Error> {
184        let v0 = T0::read(read, settings)?;
185        let v1 = T1::read(read, settings)?;
186        let v2 = T2::read(read, settings)?;
187        let v3 = T3::read(read, settings)?;
188        let v4 = T4::read(read, settings)?;
189        let v5 = T5::read(read, settings)?;
190        let v6 = T6::read(read, settings)?;
191        let v7 = T7::read(read, settings)?;
192        Ok((v0, v1, v2, v3, v4, v5, v6, v7))
193    }
194
195    fn write_field(&self, write: &mut dyn Write,
196                   settings: &Settings,
197                   _: &mut hint::Hints) -> Result<(), Error> {
198        self.0.write(write, settings)?;
199        self.1.write(write, settings)?;
200        self.2.write(write, settings)?;
201        self.3.write(write, settings)?;
202        self.4.write(write, settings)?;
203        self.5.write(write, settings)?;
204        self.6.write(write, settings)?;
205        self.7.write(write, settings)?;
206
207        Ok(())
208    }
209}
210
211impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Parcel for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
212    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
213          T5: Parcel, T6: Parcel, T7: Parcel, T8: Parcel,
214{
215    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5, T6, T7, T8)";
216
217    fn read_field(read: &mut dyn Read,
218                  settings: &Settings,
219                  _: &mut hint::Hints) -> Result<Self, Error> {
220        let v0 = T0::read(read, settings)?;
221        let v1 = T1::read(read, settings)?;
222        let v2 = T2::read(read, settings)?;
223        let v3 = T3::read(read, settings)?;
224        let v4 = T4::read(read, settings)?;
225        let v5 = T5::read(read, settings)?;
226        let v6 = T6::read(read, settings)?;
227        let v7 = T7::read(read, settings)?;
228        let v8 = T8::read(read, settings)?;
229        Ok((v0, v1, v2, v3, v4, v5, v6, v7, v8))
230    }
231
232    fn write_field(&self, write: &mut dyn Write,
233                   settings: &Settings,
234                   _: &mut hint::Hints) -> Result<(), Error> {
235        self.0.write(write, settings)?;
236        self.1.write(write, settings)?;
237        self.2.write(write, settings)?;
238        self.3.write(write, settings)?;
239        self.4.write(write, settings)?;
240        self.5.write(write, settings)?;
241        self.6.write(write, settings)?;
242        self.7.write(write, settings)?;
243        self.8.write(write, settings)?;
244
245        Ok(())
246    }
247}
248
249impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Parcel for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
250    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
251          T5: Parcel, T6: Parcel, T7: Parcel, T8: Parcel, T9: Parcel,
252{
253    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)";
254
255    fn read_field(read: &mut dyn Read,
256                  settings: &Settings,
257                  _: &mut hint::Hints) -> Result<Self, Error> {
258        let v0 = T0::read(read, settings)?;
259        let v1 = T1::read(read, settings)?;
260        let v2 = T2::read(read, settings)?;
261        let v3 = T3::read(read, settings)?;
262        let v4 = T4::read(read, settings)?;
263        let v5 = T5::read(read, settings)?;
264        let v6 = T6::read(read, settings)?;
265        let v7 = T7::read(read, settings)?;
266        let v8 = T8::read(read, settings)?;
267        let v9 = T9::read(read, settings)?;
268        Ok((v0, v1, v2, v3, v4, v5, v6, v7, v8, v9))
269    }
270
271    fn write_field(&self, write: &mut dyn Write,
272                   settings: &Settings,
273                   _: &mut hint::Hints) -> Result<(), Error> {
274        self.0.write(write, settings)?;
275        self.1.write(write, settings)?;
276        self.2.write(write, settings)?;
277        self.3.write(write, settings)?;
278        self.4.write(write, settings)?;
279        self.5.write(write, settings)?;
280        self.6.write(write, settings)?;
281        self.7.write(write, settings)?;
282        self.8.write(write, settings)?;
283        self.9.write(write, settings)?;
284
285        Ok(())
286    }
287}
288
289impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Parcel for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
290    where T0: Parcel, T1: Parcel, T2: Parcel, T3: Parcel, T4: Parcel,
291          T5: Parcel, T6: Parcel, T7: Parcel, T8: Parcel, T9: Parcel,
292          T10: Parcel,
293{
294    const TYPE_NAME: &'static str = "(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)";
295
296    fn read_field(read: &mut dyn Read,
297                  settings: &Settings,
298                  _: &mut hint::Hints) -> Result<Self, Error> {
299        let v0 = T0::read(read, settings)?;
300        let v1 = T1::read(read, settings)?;
301        let v2 = T2::read(read, settings)?;
302        let v3 = T3::read(read, settings)?;
303        let v4 = T4::read(read, settings)?;
304        let v5 = T5::read(read, settings)?;
305        let v6 = T6::read(read, settings)?;
306        let v7 = T7::read(read, settings)?;
307        let v8 = T8::read(read, settings)?;
308        let v9 = T9::read(read, settings)?;
309        let v10 = T10::read(read, settings)?;
310        Ok((v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10))
311    }
312
313    fn write_field(&self, write: &mut dyn Write,
314                   settings: &Settings,
315                   _: &mut hint::Hints) -> Result<(), Error> {
316        self.0.write(write, settings)?;
317        self.1.write(write, settings)?;
318        self.2.write(write, settings)?;
319        self.3.write(write, settings)?;
320        self.4.write(write, settings)?;
321        self.5.write(write, settings)?;
322        self.6.write(write, settings)?;
323        self.7.write(write, settings)?;
324        self.8.write(write, settings)?;
325        self.9.write(write, settings)?;
326        self.10.write(write, settings)?;
327
328        Ok(())
329    }
330}