• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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