monistode_binutils/
serializable.rs1#[derive(Debug)]
2pub enum SerializationError {
3 InvalidArchitecture(u8),
4 InvalidSectionType(u8),
5 InvalidSegmentType(u8),
6 InvalidSymbolTableHeader,
7 InvalidData,
8 DataTooShort,
9}
10
11pub trait Serializable: Sized {
12 fn serialize(&self) -> Vec<u8>;
13 fn deserialize(data: &[u8]) -> Result<(usize, Self), SerializationError>;
14}
15
16#[derive(Debug, Clone, Copy, Eq, PartialEq)]
17pub enum Architecture {
18 Stack = 0,
19 Risc = 2,
20}
21
22impl TryFrom<u8> for Architecture {
23 type Error = SerializationError;
24
25 fn try_from(value: u8) -> Result<Self, Self::Error> {
26 match value {
27 0 => Ok(Architecture::Stack),
28 2 => Ok(Architecture::Risc),
29 v => Err(SerializationError::InvalidArchitecture(v)),
30 }
31 }
32}