mls_rs_codec/
tuple.rs

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
5use 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}