mls_rs_codec/
cow.rs

1use alloc::{
2    borrow::{Cow, ToOwned},
3    vec::Vec,
4};
5
6use crate::{Error, MlsDecode, MlsEncode, MlsSize};
7
8impl<T> MlsSize for Cow<'_, T>
9where
10    T: MlsSize + ToOwned,
11{
12    fn mls_encoded_len(&self) -> usize {
13        self.as_ref().mls_encoded_len()
14    }
15}
16
17impl<T> MlsEncode for Cow<'_, T>
18where
19    T: MlsEncode + ToOwned,
20{
21    #[inline]
22    fn mls_encode(&self, writer: &mut Vec<u8>) -> Result<(), Error> {
23        self.as_ref().mls_encode(writer)
24    }
25}
26
27impl<T> MlsDecode for Cow<'_, T>
28where
29    T: ToOwned,
30    <T as ToOwned>::Owned: MlsDecode,
31{
32    fn mls_decode(reader: &mut &[u8]) -> Result<Self, Error> {
33        MlsDecode::mls_decode(reader).map(Cow::Owned)
34    }
35}