sharky-arrayvec 0.2.0

An array backed vector
Documentation
use crate::ArrayVec;
use deku::prelude::*;

impl<'a, const N: usize, T: DekuReader<'a>> DekuReader<'a, usize> for ArrayVec<N, T> {
    #[inline]
    fn from_reader_with_ctx<R: deku::no_std_io::Read + deku::no_std_io::Seek>(
        reader: &mut Reader<R>,
        len: usize,
    ) -> Result<Self, DekuError>
    where
        Self: Sized, {
        let mut vec = ArrayVec::new();

        for _ in 0..len {
            let item = T::from_reader_with_ctx(reader, ())?;
            vec.push(item);
        }

        Ok(vec)
    }
}

impl<const N: usize, T: DekuWriter> DekuWriter<usize> for ArrayVec<N, T> {
    #[inline]
    fn to_writer<W: deku::no_std_io::Write + deku::no_std_io::Seek>(
        &self,
        writer: &mut Writer<W>,
        _ctx: usize,
    ) -> Result<(), DekuError> {
        for item in self.iter() {
            item.to_writer(writer, ())?;
        }
        Ok(())
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[derive(Debug, Clone, DekuRead, DekuWrite)]
    struct Cum {
        #[deku(ctx = "5")]
        in_me: ArrayVec<10, u8>,
    }
}