Trait tfhe_versionable::Versionize

source ·
pub trait Versionize {
    type Versioned<'vers>: Serialize
       where Self: 'vers;

    // Required method
    fn versionize(&self) -> Self::Versioned<'_>;
}
Expand description

This trait means that the type can be converted into a versioned equivalent type.

Required Associated Types§

source

type Versioned<'vers>: Serialize where Self: 'vers

The equivalent versioned type. It should have a variant for each version. It may own the underlying data or only hold a read-only reference to it.

Required Methods§

source

fn versionize(&self) -> Self::Versioned<'_>

Wraps the object into a versioned enum with a variant for each version. This will use references on the underlying types if possible.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Versionize for bool

§

type Versioned<'vers> = bool

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for char

§

type Versioned<'vers> = char

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for f32

§

type Versioned<'vers> = f32

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for f64

§

type Versioned<'vers> = f64

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for i8

§

type Versioned<'vers> = i8

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for i16

§

type Versioned<'vers> = i16

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for i32

§

type Versioned<'vers> = i32

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for i64

§

type Versioned<'vers> = i64

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for i128

§

type Versioned<'vers> = i128

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for str

§

type Versioned<'vers> = &'vers str

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for u8

§

type Versioned<'vers> = u8

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for u16

§

type Versioned<'vers> = u16

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for u32

§

type Versioned<'vers> = u32

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for u64

§

type Versioned<'vers> = u64

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for u128

§

type Versioned<'vers> = u128

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for ()

§

type Versioned<'vers> = ()

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for usize

§

type Versioned<'vers> = usize

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl Versionize for String

§

type Versioned<'vers> = &'vers str

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<K: Versionize, V: Versionize> Versionize for HashMap<K, V>

§

type Versioned<'vers> = Vec<(<K as Versionize>::Versioned<'vers>, <V as Versionize>::Versioned<'vers>)> where K: 'vers, V: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T> Versionize for PhantomData<T>

§

type Versioned<'vers> = PhantomData<T> where Self: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for Option<T>

§

type Versioned<'vers> = Option<<T as Versionize>::Versioned<'vers>> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for Box<T>

§

type Versioned<'vers> = <T as Versionize>::Versioned<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for Arc<T>

§

type Versioned<'vers> = <T as Versionize>::Versioned<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for Wrapping<T>

§

type Versioned<'vers> = Wrapping<<T as Versionize>::Versioned<'vers>> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for HashSet<T>

§

type Versioned<'vers> = Vec<<T as Versionize>::Versioned<'vers>> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for ABox<T>

§

type Versioned<'vers> = <T as Versionize>::Versioned<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize> Versionize for Complex<T>

§

type Versioned<'vers> = Complex<<T as Versionize>::Versioned<'vers>> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize, U: Versionize> Versionize for (T, U)

§

type Versioned<'vers> = (<T as Versionize>::Versioned<'vers>, <U as Versionize>::Versioned<'vers>) where T: 'vers, U: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: Versionize, U: Versionize, V: Versionize> Versionize for (T, U, V)

§

type Versioned<'vers> = (<T as Versionize>::Versioned<'vers>, <U as Versionize>::Versioned<'vers>, <V as Versionize>::Versioned<'vers>) where T: 'vers, U: 'vers, V: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: VersionizeSlice + Clone> Versionize for [T]

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: VersionizeSlice + Clone> Versionize for Box<[T]>

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: VersionizeSlice + Clone> Versionize for ABox<[T]>

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: VersionizeSlice> Versionize for Vec<T>

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<T: VersionizeSlice> Versionize for AVec<T>

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

source§

impl<const N: usize, T: VersionizeSlice> Versionize for [T; N]

§

type Versioned<'vers> = <T as VersionizeSlice>::VersionedSlice<'vers> where T: 'vers

source§

fn versionize(&self) -> Self::Versioned<'_>

Implementors§