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