use std::fmt::Display;
use serde::{Serialize, de::DeserializeOwned};
pub mod bincode;
pub mod bitcode;
pub trait Dencoder {
fn encode<T: Serialize>(value: T) -> Result<Vec<u8>, Error>;
fn decode<U: DeserializeOwned>(value: Vec<u8>) -> Result<U, Error>;
}
#[derive(Debug)]
#[allow(missing_docs)]
pub enum Error {
Encode(String),
Decode(String),
}
impl Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::Encode(ctx) => write!(f, "failed to encode message: {ctx}"),
Error::Decode(ctx) => write!(f, "failed to decode message: {ctx}"),
}
}
}
impl std::error::Error for Error {}