bincake_core/
serialize_tuple.rs1use pastey::paste;
6use taped::Tape;
7
8use crate::{
9 Serialize,
10 error::{DecodeError, EncodeError},
11 read_write::{Read, Write},
12};
13
14macro_rules! impl_serialize_tuple {
18 ($($T:ident),*) => { paste! {
19 impl<$($T: Serialize),*> Serialize for ($($T),*) {
20 fn encode(&self, dest: &mut Vec<u8>) -> Result<(), EncodeError> {
21 let ($([<$T:lower>]),*) = self;
22 $(
23 dest.write([<$T:lower>])?;
24 )*
25 Ok(())
26 }
27
28 fn decode(src: &mut Tape<'_, u8>) -> Result<Self, DecodeError> {
29 Ok(($(
30 src.read::<$T>()?
31 ),*))
32 }
33 }
34 }};
35}
36
37impl_serialize_tuple!(T, U);
38impl_serialize_tuple!(T, U, V);