use crate::result::ArchiveResult; use crate::utils::ReadHelper; use std::io::{Read, Write}; pub trait ArchiveDatatype: Sized { const SIZE: usize = SIZE; fn parse(buf: [u8; SIZE]) -> Self; fn dump(&self) -> [u8; SIZE]; fn read(mut reader: impl Read) -> ArchiveResult { Ok(Self::parse(reader.read2buf::()?)) } fn write(&self, mut writer: impl Write) -> ArchiveResult<()> { writer.write(&self.dump())?; Ok(()) } }