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