use std::io::Result; mod data; pub use data::Data; pub trait Field: Sized { const ID: u16; fn size(&self) -> [u8; 2]; fn serialize_data(&self) -> &Vec; fn deserialize(data: &[u8]) -> Result; fn serialize(&self) -> Vec { let mut result = Vec::new(); result.extend_from_slice(&Self::ID.to_be_bytes()); result.extend_from_slice(&self.size()); result.extend_from_slice(self.serialize_data()); result } }