memorypack 1.2.1

A rust implementation of Cysharp/MemoryPack
Documentation
use crate::error::MemoryPackError;
use crate::reader::MemoryPackReader;
use crate::traits::{MemoryPackDeserialize, MemoryPackSerialize};
use crate::writer::MemoryPackWriter;

use std::rc::Rc;
use std::sync::Arc;

impl<T: MemoryPackSerialize> MemoryPackSerialize for Box<T> {
    #[inline]
    fn serialize(&self, writer: &mut MemoryPackWriter) -> Result<(), MemoryPackError> {
        (**self).serialize(writer)
    }
}

impl<T: MemoryPackDeserialize> MemoryPackDeserialize for Box<T> {
    #[inline]
    fn deserialize(reader: &mut MemoryPackReader) -> Result<Self, MemoryPackError> {
        Ok(Box::new(T::deserialize(reader)?))
    }
}

impl<T: MemoryPackSerialize> MemoryPackSerialize for Rc<T> {
    #[inline]
    fn serialize(&self, writer: &mut MemoryPackWriter) -> Result<(), MemoryPackError> {
        (**self).serialize(writer)
    }
}

impl<T: MemoryPackDeserialize> MemoryPackDeserialize for Rc<T> {
    #[inline]
    fn deserialize(reader: &mut MemoryPackReader) -> Result<Self, MemoryPackError> {
        Ok(Rc::new(T::deserialize(reader)?))
    }
}

impl<T: MemoryPackSerialize> MemoryPackSerialize for Arc<T> {
    #[inline]
    fn serialize(&self, writer: &mut MemoryPackWriter) -> Result<(), MemoryPackError> {
        (**self).serialize(writer)
    }
}

impl<T: MemoryPackDeserialize> MemoryPackDeserialize for Arc<T> {
    #[inline]
    fn deserialize(reader: &mut MemoryPackReader) -> Result<Self, MemoryPackError> {
        Ok(Arc::new(T::deserialize(reader)?))
    }
}