binary_codec/
lib.rs

1#[derive(Debug)]
2pub enum SerializationError {
3    /// Value is out of bounds (value, min, max)
4    ValueOutOfBounds(i32, i32, i32),
5
6    // Unexpected size (expected, actual)
7    UnexpectedLength(usize, usize),
8
9    /// Missing runtime length key
10    MissingLengthByKey(String),
11}
12
13#[derive(Debug)]
14pub enum DeserializationError {
15    /// Not enough bytes (bytes missing)
16    NotEnoughBytes(usize),
17
18    // Unexpected size (expected, actual)
19    UnexpectedLength(usize, usize),
20
21    /// Unknown enum discriminator
22    UnknownDiscriminant(u8),
23
24    /// Missing runtime length key
25    MissingLengthByKey(String),
26}
27
28pub trait BinarySerializer {
29    fn to_bytes(&self, config: Option<&mut SerializerConfig>) -> Result<Vec<u8>, SerializationError>;
30    fn write_bytes(&self, buffer: &mut Vec<u8>, config: Option<&mut SerializerConfig>) -> Result<(), SerializationError>;
31}
32
33pub trait BinaryDeserializer : Sized {
34    fn from_bytes(bytes: &[u8], config: Option<&mut SerializerConfig>) -> Result<Self, DeserializationError>;
35}
36
37mod config;
38pub mod utils;
39pub mod dynamics;
40pub mod fixed_int;
41pub mod dyn_int;
42pub mod variable;
43
44pub use binary_codec_derive::{ToBytes, FromBytes};
45pub use config::SerializerConfig;