pub trait VersionedPackageCodeOriginalCodeVersion {
type Versioned: Versioned;
type OwnedSborVariant;
type BorrowedSborVariant<'a>
where Self: 'a;
const DISCRIMINATOR: u8;
// Required methods
fn as_encodable_variant(&self) -> Self::BorrowedSborVariant<'_>;
fn from_decoded_variant(variant: Self::OwnedSborVariant) -> Self
where Self: Sized;
fn into_versioned(self) -> Self::Versioned;
}
Required Associated Constants§
const DISCRIMINATOR: u8
Required Associated Types§
type Versioned: Versioned
type OwnedSborVariant
type BorrowedSborVariant<'a> where Self: 'a
Required Methods§
Sourcefn as_encodable_variant(&self) -> Self::BorrowedSborVariant<'_>
fn as_encodable_variant(&self) -> Self::BorrowedSborVariant<'_>
Can be used to encode the type as a variant under the Versioned type, without
needing to clone, like this: encoder.encode(x.as_encodable_variant())
.
Sourcefn from_decoded_variant(variant: Self::OwnedSborVariant) -> Selfwhere
Self: Sized,
fn from_decoded_variant(variant: Self::OwnedSborVariant) -> Selfwhere
Self: Sized,
Can be used to decode the type from an encoded variant, like this:
X::from_decoded_variant(decoder.decode()?)
.
fn into_versioned(self) -> Self::Versioned
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.