pub trait Versioned:
AsRef<Self::Versions>
+ AsMut<Self::Versions>
+ From<Self::Versions> {
type Versions: From<Self>;
type LatestVersion;
// Required methods
fn is_fully_updated(&self) -> bool;
fn in_place_fully_update(&mut self) -> &mut Self;
fn fully_update_and_into_latest_version(self) -> Self::LatestVersion;
fn from_latest_version(latest: Self::LatestVersion) -> Self;
fn as_latest_version(&self) -> Option<&Self::LatestVersion>;
fn as_latest_version_mut(&mut self) -> Option<&mut Self::LatestVersion>;
fn as_versions(&self) -> &Self::Versions;
fn as_versions_mut(&mut self) -> &mut Self::Versions;
fn into_versions(self) -> Self::Versions;
fn from_versions(version: Self::Versions) -> Self;
// Provided methods
fn in_place_fully_update_and_as_latest_version_mut(
&mut self,
) -> &mut Self::LatestVersion { ... }
fn fully_update(self) -> Self { ... }
}
Expand description
A trait implemented by versioned types created via define_versioned
and define_single_versioned
.
A versioned type is a type wrapping an enum, this enum is the associated type Versioned::Versions
,
and contains a variant for each supported version.
This Versioned
type itself is a struct wrapper around this enum, which allows for fully updating
the contained version to Versioned::LatestVersion
. This wrapper is required so that the wrapper
can take ownership of old versions as part of the upgrade process, in order to incrementally update
them using the From
trait.
Required Associated Types§
Sourcetype LatestVersion
type LatestVersion
The type for the latest content.
Required Methods§
Sourcefn is_fully_updated(&self) -> bool
fn is_fully_updated(&self) -> bool
Returns true if at the latest version.
Sourcefn in_place_fully_update(&mut self) -> &mut Self
fn in_place_fully_update(&mut self) -> &mut Self
Updates to the latest version in place.
Sourcefn fully_update_and_into_latest_version(self) -> Self::LatestVersion
fn fully_update_and_into_latest_version(self) -> Self::LatestVersion
Updates itself to the latest version, then returns the latest content
Sourcefn from_latest_version(latest: Self::LatestVersion) -> Self
fn from_latest_version(latest: Self::LatestVersion) -> Self
Constructs a versioned wrapper around the latest content
Sourcefn as_latest_version(&self) -> Option<&Self::LatestVersion>
fn as_latest_version(&self) -> Option<&Self::LatestVersion>
If the versioned wrapper is at the latest version, it returns
an immutable reference to the latest content, otherwise it returns None
.
If you require the latest version unconditionally, consider using
[in_place_fully_update_and_as_latest_version_mut
] to update to the latest version first - or, if
there is only a single version, use [as_unique_version
].
Sourcefn as_latest_version_mut(&mut self) -> Option<&mut Self::LatestVersion>
fn as_latest_version_mut(&mut self) -> Option<&mut Self::LatestVersion>
If the versioned wrapper is at the latest version, it returns
a mutable reference to the latest content, otherwise it returns None
.
If you require the latest version unconditionally, consider using
[in_place_fully_update_and_as_latest_version_mut
] to update to the latest version first - or, if
there is only a single version, use [as_unique_version_mut
].
Sourcefn as_versions(&self) -> &Self::Versions
fn as_versions(&self) -> &Self::Versions
Gets a reference the inner versions enum, for e.g. matching on the enum.
This is essentially a clearer alias for as_ref
.
Sourcefn as_versions_mut(&mut self) -> &mut Self::Versions
fn as_versions_mut(&mut self) -> &mut Self::Versions
Gets a mutable reference the inner versions enum, for e.g. matching on the enum.
This is essentially a clearer alias for as_mut
.
Sourcefn into_versions(self) -> Self::Versions
fn into_versions(self) -> Self::Versions
Removes the upgradable wrapper to get at the inner versions enum, for e.g. matching on the enum.
Sourcefn from_versions(version: Self::Versions) -> Self
fn from_versions(version: Self::Versions) -> Self
Creates a new Versioned wrapper from a given specific version.
Provided Methods§
Sourcefn in_place_fully_update_and_as_latest_version_mut(
&mut self,
) -> &mut Self::LatestVersion
fn in_place_fully_update_and_as_latest_version_mut( &mut self, ) -> &mut Self::LatestVersion
Updates the latest version in place, and returns a &mut
to the latest content
Sourcefn fully_update(self) -> Self
fn fully_update(self) -> Self
Consumes self, updates to the latest version and returns itself.
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 Versioned for VersionedAccountAuthorizedDepositor
impl Versioned for VersionedAccountAuthorizedDepositor
Source§fn from_latest_version(
latest: <VersionedAccountAuthorizedDepositor as Versioned>::LatestVersion,
) -> VersionedAccountAuthorizedDepositor
fn from_latest_version( latest: <VersionedAccountAuthorizedDepositor as Versioned>::LatestVersion, ) -> VersionedAccountAuthorizedDepositor
Constructs the versioned enum from the latest content
type Versions = AccountAuthorizedDepositorVersions
type LatestVersion = ()
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedAccountAuthorizedDepositor
fn fully_update_and_into_latest_version( self, ) -> <VersionedAccountAuthorizedDepositor as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedAccountAuthorizedDepositor as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedAccountAuthorizedDepositor as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedAccountAuthorizedDepositor as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedAccountAuthorizedDepositor as Versioned>::Versions
fn into_versions( self, ) -> <VersionedAccountAuthorizedDepositor as Versioned>::Versions
fn from_versions( version: <VersionedAccountAuthorizedDepositor as Versioned>::Versions, ) -> VersionedAccountAuthorizedDepositor
Source§impl Versioned for VersionedAccountDepositRule
impl Versioned for VersionedAccountDepositRule
Source§fn from_latest_version(
latest: <VersionedAccountDepositRule as Versioned>::LatestVersion,
) -> VersionedAccountDepositRule
fn from_latest_version( latest: <VersionedAccountDepositRule as Versioned>::LatestVersion, ) -> VersionedAccountDepositRule
Constructs the versioned enum from the latest content
type Versions = AccountDepositRuleVersions
type LatestVersion = AccountSubstate
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedAccountDepositRule
fn fully_update_and_into_latest_version( self, ) -> <VersionedAccountDepositRule as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedAccountDepositRule as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedAccountDepositRule as Versioned>::LatestVersion>
fn as_versions(&self) -> &<VersionedAccountDepositRule as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedAccountDepositRule as Versioned>::Versions
fn into_versions(self) -> <VersionedAccountDepositRule as Versioned>::Versions
fn from_versions( version: <VersionedAccountDepositRule as Versioned>::Versions, ) -> VersionedAccountDepositRule
Source§impl Versioned for VersionedAccountResourcePreference
impl Versioned for VersionedAccountResourcePreference
Source§fn from_latest_version(
latest: <VersionedAccountResourcePreference as Versioned>::LatestVersion,
) -> VersionedAccountResourcePreference
fn from_latest_version( latest: <VersionedAccountResourcePreference as Versioned>::LatestVersion, ) -> VersionedAccountResourcePreference
Constructs the versioned enum from the latest content
type Versions = AccountResourcePreferenceVersions
type LatestVersion = ResourcePreference
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedAccountResourcePreference
fn fully_update_and_into_latest_version( self, ) -> <VersionedAccountResourcePreference as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedAccountResourcePreference as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedAccountResourcePreference as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedAccountResourcePreference as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedAccountResourcePreference as Versioned>::Versions
fn into_versions( self, ) -> <VersionedAccountResourcePreference as Versioned>::Versions
fn from_versions( version: <VersionedAccountResourcePreference as Versioned>::Versions, ) -> VersionedAccountResourcePreference
Source§impl Versioned for VersionedAccountResourceVault
impl Versioned for VersionedAccountResourceVault
Source§fn from_latest_version(
latest: <VersionedAccountResourceVault as Versioned>::LatestVersion,
) -> VersionedAccountResourceVault
fn from_latest_version( latest: <VersionedAccountResourceVault as Versioned>::LatestVersion, ) -> VersionedAccountResourceVault
Constructs the versioned enum from the latest content
type Versions = AccountResourceVaultVersions
type LatestVersion = Vault
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedAccountResourceVault
fn fully_update_and_into_latest_version( self, ) -> <VersionedAccountResourceVault as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedAccountResourceVault as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedAccountResourceVault as Versioned>::LatestVersion>
fn as_versions(&self) -> &<VersionedAccountResourceVault as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedAccountResourceVault as Versioned>::Versions
fn into_versions(self) -> <VersionedAccountResourceVault as Versioned>::Versions
fn from_versions( version: <VersionedAccountResourceVault as Versioned>::Versions, ) -> VersionedAccountResourceVault
Source§impl Versioned for VersionedAccountLockerAccountClaims
impl Versioned for VersionedAccountLockerAccountClaims
Source§fn from_latest_version(
latest: <VersionedAccountLockerAccountClaims as Versioned>::LatestVersion,
) -> VersionedAccountLockerAccountClaims
fn from_latest_version( latest: <VersionedAccountLockerAccountClaims as Versioned>::LatestVersion, ) -> VersionedAccountLockerAccountClaims
Constructs the versioned enum from the latest content
type Versions = AccountLockerAccountClaimsVersions
type LatestVersion = Own
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedAccountLockerAccountClaims
fn fully_update_and_into_latest_version( self, ) -> <VersionedAccountLockerAccountClaims as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedAccountLockerAccountClaims as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedAccountLockerAccountClaims as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedAccountLockerAccountClaims as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedAccountLockerAccountClaims as Versioned>::Versions
fn into_versions( self, ) -> <VersionedAccountLockerAccountClaims as Versioned>::Versions
fn from_versions( version: <VersionedAccountLockerAccountClaims as Versioned>::Versions, ) -> VersionedAccountLockerAccountClaims
Source§impl Versioned for VersionedMetadataEntry
impl Versioned for VersionedMetadataEntry
Source§fn from_latest_version(
latest: <VersionedMetadataEntry as Versioned>::LatestVersion,
) -> VersionedMetadataEntry
fn from_latest_version( latest: <VersionedMetadataEntry as Versioned>::LatestVersion, ) -> VersionedMetadataEntry
Constructs the versioned enum from the latest content
type Versions = MetadataEntryVersions
type LatestVersion = GenericMetadataValue<UncheckedUrl, UncheckedOrigin>
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedMetadataEntry
fn fully_update_and_into_latest_version( self, ) -> <VersionedMetadataEntry as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedMetadataEntry as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedMetadataEntry as Versioned>::LatestVersion>
fn as_versions(&self) -> &<VersionedMetadataEntry as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedMetadataEntry as Versioned>::Versions
fn into_versions(self) -> <VersionedMetadataEntry as Versioned>::Versions
fn from_versions( version: <VersionedMetadataEntry as Versioned>::Versions, ) -> VersionedMetadataEntry
Source§impl Versioned for VersionedRoleAssignmentAccessRule
impl Versioned for VersionedRoleAssignmentAccessRule
Source§fn from_latest_version(
latest: <VersionedRoleAssignmentAccessRule as Versioned>::LatestVersion,
) -> VersionedRoleAssignmentAccessRule
fn from_latest_version( latest: <VersionedRoleAssignmentAccessRule as Versioned>::LatestVersion, ) -> VersionedRoleAssignmentAccessRule
Constructs the versioned enum from the latest content
type Versions = RoleAssignmentAccessRuleVersions
type LatestVersion = AccessRule
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedRoleAssignmentAccessRule
fn fully_update_and_into_latest_version( self, ) -> <VersionedRoleAssignmentAccessRule as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedRoleAssignmentAccessRule as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedRoleAssignmentAccessRule as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedRoleAssignmentAccessRule as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedRoleAssignmentAccessRule as Versioned>::Versions
fn into_versions( self, ) -> <VersionedRoleAssignmentAccessRule as Versioned>::Versions
fn from_versions( version: <VersionedRoleAssignmentAccessRule as Versioned>::Versions, ) -> VersionedRoleAssignmentAccessRule
Source§impl Versioned for VersionedRoleAssignmentOwner
impl Versioned for VersionedRoleAssignmentOwner
Source§fn from_latest_version(
latest: <VersionedRoleAssignmentOwner as Versioned>::LatestVersion,
) -> VersionedRoleAssignmentOwner
fn from_latest_version( latest: <VersionedRoleAssignmentOwner as Versioned>::LatestVersion, ) -> VersionedRoleAssignmentOwner
Constructs the versioned enum from the latest content
type Versions = RoleAssignmentOwnerVersions
type LatestVersion = OwnerRoleSubstate
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedRoleAssignmentOwner
fn fully_update_and_into_latest_version( self, ) -> <VersionedRoleAssignmentOwner as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedRoleAssignmentOwner as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedRoleAssignmentOwner as Versioned>::LatestVersion>
fn as_versions(&self) -> &<VersionedRoleAssignmentOwner as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedRoleAssignmentOwner as Versioned>::Versions
fn into_versions(self) -> <VersionedRoleAssignmentOwner as Versioned>::Versions
fn from_versions( version: <VersionedRoleAssignmentOwner as Versioned>::Versions, ) -> VersionedRoleAssignmentOwner
Source§impl Versioned for VersionedComponentRoyaltyAccumulator
impl Versioned for VersionedComponentRoyaltyAccumulator
Source§fn from_latest_version(
latest: <VersionedComponentRoyaltyAccumulator as Versioned>::LatestVersion,
) -> VersionedComponentRoyaltyAccumulator
fn from_latest_version( latest: <VersionedComponentRoyaltyAccumulator as Versioned>::LatestVersion, ) -> VersionedComponentRoyaltyAccumulator
Constructs the versioned enum from the latest content
type Versions = ComponentRoyaltyAccumulatorVersions
type LatestVersion = ComponentRoyaltySubstate
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedComponentRoyaltyAccumulator
fn fully_update_and_into_latest_version( self, ) -> <VersionedComponentRoyaltyAccumulator as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedComponentRoyaltyAccumulator as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedComponentRoyaltyAccumulator as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedComponentRoyaltyAccumulator as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedComponentRoyaltyAccumulator as Versioned>::Versions
fn into_versions( self, ) -> <VersionedComponentRoyaltyAccumulator as Versioned>::Versions
fn from_versions( version: <VersionedComponentRoyaltyAccumulator as Versioned>::Versions, ) -> VersionedComponentRoyaltyAccumulator
Source§impl Versioned for VersionedComponentRoyaltyMethodAmount
impl Versioned for VersionedComponentRoyaltyMethodAmount
Source§fn from_latest_version(
latest: <VersionedComponentRoyaltyMethodAmount as Versioned>::LatestVersion,
) -> VersionedComponentRoyaltyMethodAmount
fn from_latest_version( latest: <VersionedComponentRoyaltyMethodAmount as Versioned>::LatestVersion, ) -> VersionedComponentRoyaltyMethodAmount
Constructs the versioned enum from the latest content
type Versions = ComponentRoyaltyMethodAmountVersions
type LatestVersion = RoyaltyAmount
fn is_fully_updated(&self) -> bool
fn in_place_fully_update( &mut self, ) -> &mut VersionedComponentRoyaltyMethodAmount
fn fully_update_and_into_latest_version( self, ) -> <VersionedComponentRoyaltyMethodAmount as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedComponentRoyaltyMethodAmount as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedComponentRoyaltyMethodAmount as Versioned>::LatestVersion>
fn as_versions( &self, ) -> &<VersionedComponentRoyaltyMethodAmount as Versioned>::Versions
fn as_versions_mut( &mut self, ) -> &mut <VersionedComponentRoyaltyMethodAmount as Versioned>::Versions
fn into_versions( self, ) -> <VersionedComponentRoyaltyMethodAmount as Versioned>::Versions
fn from_versions( version: <VersionedComponentRoyaltyMethodAmount as Versioned>::Versions, ) -> VersionedComponentRoyaltyMethodAmount
Source§impl Versioned for VersionedTreeNode
impl Versioned for VersionedTreeNode
Source§fn from_latest_version(
latest: <VersionedTreeNode as Versioned>::LatestVersion,
) -> VersionedTreeNode
fn from_latest_version( latest: <VersionedTreeNode as Versioned>::LatestVersion, ) -> VersionedTreeNode
Constructs the versioned enum from the latest content
type Versions = TreeNodeVersions
type LatestVersion = TreeNodeV1
fn is_fully_updated(&self) -> bool
fn in_place_fully_update(&mut self) -> &mut VersionedTreeNode
fn fully_update_and_into_latest_version( self, ) -> <VersionedTreeNode as Versioned>::LatestVersion
fn as_latest_version( &self, ) -> Option<&<VersionedTreeNode as Versioned>::LatestVersion>
fn as_latest_version_mut( &mut self, ) -> Option<&mut <VersionedTreeNode as Versioned>::LatestVersion>
fn as_versions(&self) -> &<VersionedTreeNode as Versioned>::Versions
fn as_versions_mut(&mut self) -> &mut <VersionedTreeNode as Versioned>::Versions
fn into_versions(self) -> <VersionedTreeNode as Versioned>::Versions
fn from_versions( version: <VersionedTreeNode as Versioned>::Versions, ) -> VersionedTreeNode
Source§impl Versioned for TransactionValidationConfigurationSubstate
impl Versioned for TransactionValidationConfigurationSubstate
Source§fn from_latest_version(
latest: <TransactionValidationConfigurationSubstate as Versioned>::LatestVersion,
) -> TransactionValidationConfigurationSubstate
fn from_latest_version( latest: <TransactionValidationConfigurationSubstate as Versioned>::LatestVersion, ) -> TransactionValidationConfigurationSubstate
Constructs the versioned enum from the latest content