1#[derive(Debug)]
2pub enum SerializationError {
3 ValueOutOfBounds(i32, i32, i32),
5
6 UnexpectedLength(usize, usize),
8
9 MissingLengthByKey(String),
11
12 InvalidData(String),
14}
15
16#[derive(Debug)]
17pub enum DeserializationError {
18 NotEnoughBytes(usize),
20
21 UnexpectedLength(usize, usize),
23
24 UnknownDiscriminant(u8),
26
27 MissingLengthByKey(String),
29
30 InvalidData(String),
32}
33
34pub trait BinarySerializer<T : Clone = ()> {
35 fn serialize(&self, config: Option<&mut SerializerConfig<T>>) -> Result<Vec<u8>, SerializationError>;
36 fn to_bytes(&self) -> Result<Vec<u8>, SerializationError> {
37 self.serialize(None)
38 }
39
40 fn write_bytes(&self, buffer: &mut Vec<u8>, config: Option<&mut SerializerConfig<T>>) -> Result<(), SerializationError>;
41}
42
43pub trait BinaryDeserializer<T : Clone = ()> : Sized {
44 fn deserialize(bytes: &[u8], config: Option<&mut SerializerConfig<T>>) -> Result<Self, DeserializationError>;
45 fn from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError> {
46 Self::deserialize(bytes, None)
47 }
48}
49
50mod config;
51pub mod utils;
52pub mod dynamics;
53pub mod fixed_int;
54pub mod dyn_int;
55pub mod variable;
56
57pub use binary_codec_derive::{ToBytes, FromBytes};
58pub use config::SerializerConfig;