use serde::{Deserialize, Serialize};
pub fn encode<T: Serialize>(value: &T) -> Result<Vec<u8>, postcard::Error> {
postcard::to_allocvec(value)
}
pub fn decode<'a, T: Deserialize<'a>>(bytes: &'a [u8]) -> Result<T, postcard::Error> {
postcard::from_bytes(bytes)
}
#[inline]
pub fn pack_ptr_len(ptr: i32, len: i32) -> i64 {
((ptr as i64) << 32) | (len as u32 as i64)
}
#[inline]
pub fn unpack_ptr_len(v: i64) -> (i32, i32) {
((v >> 32) as i32, v as i32)
}