[][src]Trait versionize::Versionize

pub trait Versionize {
    pub fn serialize<W: Write>(
        &self,
        writer: &mut W,
        version_map: &VersionMap,
        target_version: u16
    ) -> VersionizeResult<()>;
pub fn deserialize<R: Read>(
        reader: &mut R,
        version_map: &VersionMap,
        source_version: u16
    ) -> VersionizeResult<Self>
    where
        Self: Sized
;
pub fn version() -> u16; pub fn type_id() -> TypeId
    where
        Self: 'static
, { ... } }

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

pub fn serialize<W: Write>(
    &self,
    writer: &mut W,
    version_map: &VersionMap,
    target_version: u16
) -> VersionizeResult<()>
[src]

Serializes self to target_verion using the specficifed writer and version_map.

pub fn deserialize<R: Read>(
    reader: &mut R,
    version_map: &VersionMap,
    source_version: u16
) -> VersionizeResult<Self> where
    Self: Sized
[src]

Returns a new instance of Self by deserializing from source_version using the specficifed reader and version_map.

pub fn version() -> u16[src]

Returns latest Self version number.

Loading content...

Provided methods

pub fn type_id() -> TypeId where
    Self: 'static, 
[src]

Returns the Self type id. The returned ID represents a globally unique identifier for a type. It is required by the VersionMap implementation.

Loading content...

Implementations on Foreign Types

impl Versionize for bool[src]

impl Versionize for isize[src]

impl Versionize for i8[src]

impl Versionize for i16[src]

impl Versionize for i32[src]

impl Versionize for i64[src]

impl Versionize for usize[src]

impl Versionize for u8[src]

impl Versionize for u16[src]

impl Versionize for u32[src]

impl Versionize for u64[src]

impl Versionize for f32[src]

impl Versionize for f64[src]

impl Versionize for char[src]

impl Versionize for String[src]

impl<T> Versionize for [T; 0] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 1] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 2] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 3] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 4] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 5] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 6] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 7] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 8] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 9] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 10] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 11] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 12] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 13] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 14] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 15] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 16] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 17] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 18] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 19] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 20] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 21] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 22] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 23] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 24] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 25] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 26] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 27] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 28] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 29] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 30] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 31] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for [T; 32] where
    T: Copy + Default + Versionize
[src]

impl<T> Versionize for Box<T> where
    T: Versionize
[src]

impl<T> Versionize for Wrapping<T> where
    T: Versionize
[src]

impl<T> Versionize for Option<T> where
    T: Versionize
[src]

impl<T> Versionize for Vec<T> where
    T: Versionize
[src]

impl<T: Default + FamStruct + Versionize> Versionize for FamStructWrapper<T> where
    <T as FamStruct>::Entry: Versionize,
    T: Debug
[src]

impl<T: Versionize, U: Versionize> Versionize for (T, U)[src]

Loading content...

Implementors

Loading content...