use crate::error::MemoryPackError;
use crate::reader::MemoryPackReader;
use crate::traits::{MemoryPackDeserialize, MemoryPackSerialize};
use crate::writer::MemoryPackWriter;
pub struct MemoryPackSerializer;
impl MemoryPackSerializer {
#[inline]
pub fn serialize<T: MemoryPackSerialize>(value: &T) -> Result<Vec<u8>, MemoryPackError> {
let mut writer = MemoryPackWriter::with_capacity(64);
value.serialize(&mut writer)?;
Ok(writer.into_bytes())
}
#[inline]
pub fn serialize_to<T: MemoryPackSerialize>(
value: &T,
writer: &mut MemoryPackWriter,
) -> Result<(), MemoryPackError> {
value.serialize(writer)
}
#[inline]
pub fn deserialize<T: MemoryPackDeserialize>(data: &[u8]) -> Result<T, MemoryPackError> {
let mut reader = MemoryPackReader::new(data);
T::deserialize(&mut reader)
}
#[inline]
pub fn deserialize_from<T: MemoryPackDeserialize>(
reader: &mut MemoryPackReader,
) -> Result<T, MemoryPackError> {
T::deserialize(reader)
}
#[inline]
pub fn deserialize_zero_copy<'a, T>(data: &'a [u8]) -> Result<T, MemoryPackError>
where
T: crate::traits::MemoryPackDeserializeZeroCopy<'a>,
{
let mut reader = MemoryPackReader::new(data);
T::deserialize(&mut reader)
}
}