#![doc = include_str!("../README.md")]
pub use bin_layout_derive::*;
pub mod len;
mod record;
mod types;
mod utils;
use len::*;
use std::io::{self, Write};
use utils::*;
pub use record::*;
type DynErr = Box<dyn std::error::Error + Send + Sync>;
type Result<T> = std::result::Result<T, DynErr>;
pub trait Encoder {
fn encoder(&self, _: &mut impl Write) -> io::Result<()>;
#[inline]
fn encode(&self) -> Vec<u8> {
let mut vec = Vec::new();
self.encoder(&mut vec).unwrap();
vec
}
}
pub trait Decoder<'de>: Sized {
fn decoder(_: &mut &'de [u8]) -> Result<Self>;
#[inline]
fn decode(data: &'de [u8]) -> Result<Self> {
let mut reader = data;
Self::decoder(&mut reader)
}
}