1 // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 // Copyright by contributors to this project.
3 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
4 
5 use crate::{MlsDecode, MlsEncode, MlsSize};
6 
7 use alloc::vec::Vec;
8 
9 impl<T, U> MlsSize for (T, U)
10 where
11     T: MlsSize,
12     U: MlsSize,
13 {
mls_encoded_len(&self) -> usize14     fn mls_encoded_len(&self) -> usize {
15         self.0.mls_encoded_len() + self.1.mls_encoded_len()
16     }
17 }
18 
19 impl<T, U> MlsEncode for (T, U)
20 where
21     T: MlsEncode,
22     U: MlsEncode,
23 {
mls_encode(&self, writer: &mut Vec<u8>) -> Result<(), crate::Error>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 
30 impl<T, U> MlsDecode for (T, U)
31 where
32     T: MlsDecode,
33     U: MlsDecode,
34 {
mls_decode(reader: &mut &[u8]) -> Result<Self, crate::Error>35     fn mls_decode(reader: &mut &[u8]) -> Result<Self, crate::Error> {
36         Ok((T::mls_decode(reader)?, U::mls_decode(reader)?))
37     }
38 }
39