Trait versionize::Versionize
source · pub trait Versionize {
// Required methods
fn serialize<W: Write>(
&self,
writer: &mut W,
version_map: &VersionMap,
target_version: u16
) -> VersionizeResult<()>;
fn deserialize<R: Read>(
reader: &mut R,
version_map: &VersionMap,
source_version: u16
) -> VersionizeResult<Self>
where Self: Sized;
fn version() -> u16;
// Provided method
fn type_id() -> TypeId
where Self: 'static { ... }
}Expand description
Trait that provides an interface for version aware serialization and deserialization. The Versionize proc macro can generate an implementation for a given type if generics are not used, otherwise a manual implementation is required.
Example implementation
extern crate versionize;
extern crate versionize_derive;
use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
struct MyType<T>(T);
impl<T> Versionize for MyType<T>
where
T: Versionize,
{
#[inline]
fn serialize<W: std::io::Write>(
&self,
writer: &mut W,
version_map: &VersionMap,
app_version: u16,
) -> VersionizeResult<()> {
self.0.serialize(writer, version_map, app_version)
}
#[inline]
fn deserialize<R: std::io::Read>(
reader: &mut R,
version_map: &VersionMap,
app_version: u16,
) -> VersionizeResult<Self> {
Ok(MyType(T::deserialize(reader, version_map, app_version)?))
}
fn version() -> u16 {
1
}
}Required Methods§
sourcefn serialize<W: Write>(
&self,
writer: &mut W,
version_map: &VersionMap,
target_version: u16
) -> VersionizeResult<()>
fn serialize<W: Write>( &self, writer: &mut W, version_map: &VersionMap, target_version: u16 ) -> VersionizeResult<()>
Serializes self to target_verion using the specficifed writer and
version_map.
sourcefn deserialize<R: Read>(
reader: &mut R,
version_map: &VersionMap,
source_version: u16
) -> VersionizeResult<Self>where
Self: Sized,
fn deserialize<R: Read>( reader: &mut R, version_map: &VersionMap, source_version: u16 ) -> VersionizeResult<Self>where Self: Sized,
Returns a new instance of Self by deserializing from source_version
using the specficifed reader and version_map.