use alloc::vec::Vec;
use bytes::BufMut;
use serde::{Deserialize, Serialize};
use crate::Error;
mod deserializer;
mod serializer;
pub fn to_buffer<X, T>(buffer: &mut X, value: &T)
where
X: BufMut,
T: Serialize + ?Sized,
{
value
.serialize(&mut serializer::MsgpackSerializer::from(buffer))
.ok();
}
pub fn to_vec<T>(value: &T) -> Vec<u8>
where
T: Serialize + ?Sized,
{
let mut v = Vec::new();
to_buffer(&mut v, value);
v
}
pub fn from_slice<'a, T>(s: &'a [u8]) -> Result<T, Error>
where
T: Deserialize<'a>,
{
T::deserialize(&mut deserializer::MsgpackDeserializer(s))
}