blob: 82e8abd5273013516e812dcc28f531ff1681c473 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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<u8>;
fn deserialize(data: &[u8]) -> Result<Self>;
fn serialize(&self) -> Vec<u8> {
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
}
}
|