redoubt_codec_core/collections/
redoubt_array.rs1use redoubt_alloc::RedoubtArray;
10use redoubt_zero::{FastZeroizable, ZeroizationProbe, ZeroizeMetadata};
11
12use crate::codec_buffer::RedoubtCodecBuffer;
13use crate::error::{DecodeError, EncodeError, OverflowError};
14use crate::traits::{BytesRequired, Decode, DecodeSlice, Encode, EncodeSlice};
15
16impl<T, const N: usize> BytesRequired for RedoubtArray<T, N>
17where
18 T: BytesRequired + FastZeroizable + ZeroizeMetadata + ZeroizationProbe,
19{
20 #[inline(always)]
21 fn encode_bytes_required(&self) -> Result<usize, OverflowError> {
22 self.as_array().encode_bytes_required()
24 }
25}
26
27impl<T, const N: usize> Encode for RedoubtArray<T, N>
28where
29 T: EncodeSlice + BytesRequired + FastZeroizable + ZeroizeMetadata + ZeroizationProbe,
30{
31 #[inline(always)]
32 fn encode_into(&mut self, buf: &mut RedoubtCodecBuffer) -> Result<(), EncodeError> {
33 self.as_mut_array().encode_into(buf)
35 }
36}
37
38impl<T, const N: usize> Decode for RedoubtArray<T, N>
39where
40 T: DecodeSlice + FastZeroizable + ZeroizeMetadata + ZeroizationProbe,
41{
42 #[inline(always)]
43 fn decode_from(&mut self, buf: &mut &mut [u8]) -> Result<(), DecodeError> {
44 self.as_mut_array().decode_from(buf)
46 }
47}