1use crate::{MlsDecode, MlsEncode, MlsSize};
6
7use alloc::vec::Vec;
8
9impl<T, U> MlsSize for (T, U)
10where
11 T: MlsSize,
12 U: MlsSize,
13{
14 fn mls_encoded_len(&self) -> usize {
15 self.0.mls_encoded_len() + self.1.mls_encoded_len()
16 }
17}
18
19impl<T, U> MlsEncode for (T, U)
20where
21 T: MlsEncode,
22 U: MlsEncode,
23{
24 fn mls_encode(&self, writer: &mut Vec<u8>) -> Result<(), crate::Error> {
25 self.0.mls_encode(writer)?;
26 self.1.mls_encode(writer)
27 }
28}
29
30impl<T, U> MlsDecode for (T, U)
31where
32 T: MlsDecode,
33 U: MlsDecode,
34{
35 fn mls_decode(reader: &mut &[u8]) -> Result<Self, crate::Error> {
36 Ok((T::mls_decode(reader)?, U::mls_decode(reader)?))
37 }
38}