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