pub trait GetStorageVersion {
type InCodeStorageVersion;
// Required methods
fn in_code_storage_version() -> Self::InCodeStorageVersion;
fn on_chain_storage_version() -> StorageVersion;
// Provided method
fn current_storage_version() -> Self::InCodeStorageVersion { ... }
}
Expand description
Provides information about a pallet’s storage versions.
Every pallet has two storage versions:
- An in-code storage version
- An on-chain storage version
The in-code storage version is the version of the pallet as defined in the runtime blob, and the on-chain storage version is the version of the pallet stored on-chain.
Storage versions should be only ever be out of sync when a pallet has been updated to a new version and the in-code version is incremented, but the migration has not yet been executed on-chain as part of a runtime upgrade.
It is the responsibility of the developer to ensure that the on-chain storage version is set correctly during a migration so that it matches the in-code storage version.
Required Associated Types§
Sourcetype InCodeStorageVersion
type InCodeStorageVersion
This type is generated by the pallet
macro.
If the storage_version
attribute isn’t specified,
this is set to NoStorageVersionSet
to signify that it is missing.
If the storage_version
attribute is specified,
this is be set to a StorageVersion
corresponding to the attribute.
The intention of using NoStorageVersionSet
instead of defaulting to a StorageVersion
of zero is to prevent developers from forgetting to set
storage_version
when it is required, like in the
case that they wish to compare the in-code storage version to the on-chain storage version.
Required Methods§
Sourcefn in_code_storage_version() -> Self::InCodeStorageVersion
fn in_code_storage_version() -> Self::InCodeStorageVersion
Returns the in-code storage version as specified in the
storage_version
attribute, or
NoStorageVersionSet
if the attribute is missing.
Sourcefn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
Returns the storage version of the pallet as last set in the actual on-chain storage.
Provided Methods§
Sourcefn current_storage_version() -> Self::InCodeStorageVersion
👎Deprecated: This method has been renamed to in_code_storage_version
and will be removed after March 2024.
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version
and will be removed after March 2024.DEPRECATED: Use Self::current_storage_version
instead.
Returns the in-code storage version as specified in the
storage_version
attribute, or
NoStorageVersionSet
if the attribute is missing.
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.