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>,
}
}