Trait Revisioned

Source
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§

Source

fn revision() -> u16

Returns the current revision of this type.

Provided Methods§

Source

fn type_id() -> TypeId
where Self: 'static,

Returns the type id of this type.

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.

Implementations on Foreign Types§

Source§

impl Revisioned for bool

Source§

impl Revisioned for char

Source§

impl Revisioned for f32

Source§

impl Revisioned for f64

Source§

impl Revisioned for i8

Source§

impl Revisioned for i16

Source§

impl Revisioned for i32

Source§

impl Revisioned for i64

Source§

impl Revisioned for i128

Source§

impl Revisioned for isize

Source§

impl Revisioned for u8

Source§

impl Revisioned for u16

Source§

impl Revisioned for u32

Source§

impl Revisioned for u64

Source§

impl Revisioned for u128

Source§

impl Revisioned for ()

Source§

impl Revisioned for usize

Source§

impl Revisioned for String

Source§

impl Revisioned for Duration

Source§

impl Revisioned for PathBuf

Source§

impl<A> Revisioned for (A,)
where A: Revisioned,

Source§

impl<A, B> Revisioned for (A, B)
where A: Revisioned, B: Revisioned,

Source§

impl<A, B, C> Revisioned for (A, B, C)
where A: Revisioned, B: Revisioned, C: Revisioned,

Source§

impl<A, B, C, D> Revisioned for (A, B, C, D)

Source§

impl<A, B, C, D, E> Revisioned for (A, B, C, D, E)

Source§

impl<A, B, C, D, E, F> Revisioned for (A, B, C, D, E, F)

Source§

impl<E: Revisioned, T: Revisioned> Revisioned for Result<T, E>

Source§

impl<K: Revisioned + Eq + Hash, V: Revisioned, S: BuildHasher + Default> Revisioned for HashMap<K, V, S>

Source§

impl<K: Revisioned + Ord, V: Revisioned> Revisioned for BTreeMap<K, V>

Source§

impl<T> Revisioned for Cow<'_, T>

Source§

impl<T> Revisioned for Option<T>
where T: Revisioned,

Source§

impl<T> Revisioned for [T; 1]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 2]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 3]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 4]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 5]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 6]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 7]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 8]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 9]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 10]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 11]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 12]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 13]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 14]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 15]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 16]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 17]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 18]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 19]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 20]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 21]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 22]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 23]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 24]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 25]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 26]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 27]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 28]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 29]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 30]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 31]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for [T; 32]
where T: Copy + Default + Revisioned,

Source§

impl<T> Revisioned for Box<T>
where T: Revisioned,

Source§

impl<T> Revisioned for Vec<T>
where T: Revisioned,

Source§

impl<T> Revisioned for Reverse<T>
where T: Revisioned,

Source§

impl<T> Revisioned for Wrapping<T>
where T: Revisioned,

Source§

impl<T: Revisioned + Eq + Ord> Revisioned for BTreeSet<T>

Source§

impl<T: Revisioned + Eq + Hash, S: BuildHasher + Default> Revisioned for HashSet<T, S>

Source§

impl<T: Revisioned + Ord> Revisioned for BinaryHeap<T>

Source§

impl<T: Revisioned> Revisioned for Bound<T>

Implementors§