pub trait Revisioned {
// Required method
fn revision() -> u16;
// Provided method
fn type_id() -> TypeId
where Self: 'static { ... }
}
Expand description
Trait that provides an interface for version aware serialization and deserialization.
Example implementation
use revision::Error;
use revision::prelude::*;
struct MyType<T>(T);
impl<T> SerializeRevisioned for MyType<T>
where
T: SerializeRevisioned,
{
#[inline]
fn serialize_revisioned<W: std::io::Write>(&self, writer: &mut W) -> Result<(), Error> {
self.0.serialize_revisioned(writer)
}
}
impl<T> DeserializeRevisioned for MyType<T>
where
T: DeserializeRevisioned,
{
#[inline]
fn deserialize_revisioned<R: std::io::Read>(reader: &mut R) -> Result<Self, Error> {
Ok(MyType(T::deserialize_revisioned(reader)?))
}
}
impl<T> Revisioned for MyType<T>
where
T: Revisioned,
{
fn revision() -> u16 {
1
}
}
Required Methods§
Provided Methods§
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.