use std::io::Read;
pub struct Header {
signature: [u8;3], version: [u8;3], }
impl Header {
pub fn parse_from_reader(rdr: &mut std::io::Cursor<&[u8]>) -> std::io::Result<Self> {
let mut h = Self {
signature: [0; 3],
version: [0; 3],
};
rdr.read_exact(&mut h.signature)?;
rdr.read_exact(&mut h.version)?;
Ok(h)
}
}
impl std::fmt::Display for Header {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
let sig_str = match std::str::from_utf8(&self.signature) {
Ok(s) => s,
Err(_) => "",
};
let ver_str = match std::str::from_utf8(&self.version) {
Ok(s) => s,
Err(_) => "",
};
write!(f, "#<Header signature=\"{}\" version=\"{}\" >", sig_str, ver_str)
}
}