use buffa::{DecodeError, Message};
pub fn decode<T: Default + Message>(buf: &Vec<u8>) -> Result<T, DecodeError> {
T::decode_from_slice(&buf[..])
}
pub fn decode_ptr<T: Default + Message>(ptr: *mut u8, size: usize) -> Result<T, DecodeError> {
let bytes = unsafe { std::slice::from_raw_parts(ptr, size) };
T::decode_from_slice(bytes)
}
pub fn encode<M: Message>(msg: &M) -> Vec<u8> {
msg.encode_to_vec()
}
pub fn encode_to_ptr<M: Message>(msg: &M) -> (*const u8, usize, Vec<u8>) {
let buffer = encode(msg);
(buffer.as_ptr(), buffer.len(), buffer)
}