Trait VersionedLatest

Source
pub trait VersionedLatest: Versioned + TypeFingerprint {
    // Required method
    fn deserialize_from_version<R>(
        reader: &mut R,
        version: Version,
    ) -> Result<Self>
       where R: Read,
             Self: Sized;

    // Provided methods
    fn deserialize_with_version<R>(reader: &mut R) -> Result<(Self, Version)>
       where R: Read,
             Self: Sized { ... }
    fn serialize_with_version<W>(&self, writer: &mut W) -> Result<()>
       where W: Write,
             Self: Sized { ... }
}
Expand description

This trait is only assigned to the latest version of a type and allows the type to deserialize any older versions and upgrade them to the latest format.

Required Methods§

Source

fn deserialize_from_version<R>(reader: &mut R, version: Version) -> Result<Self>
where R: Read, Self: Sized,

Deserializes from a given version format and upgrades to the latest version.

Provided Methods§

Source

fn deserialize_with_version<R>(reader: &mut R) -> Result<(Self, Version)>
where R: Read, Self: Sized,

Like deserialize_from_version but reads Version from reader first, then uses it to deserialize self.

Source

fn serialize_with_version<W>(&self, writer: &mut W) -> Result<()>
where W: Write, Self: Sized,

Like serialize_into but serialized Version first, then self.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§