Trait polkadot_sdk_frame::traits::StoredMap
pub trait StoredMap<K, T>where
T: Default,{
// Required methods
fn get(k: &K) -> T;
fn try_mutate_exists<R, E>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> Result<R, E>,
) -> Result<R, E>
where E: From<DispatchError>;
// Provided methods
fn mutate<R>(k: &K, f: impl FnOnce(&mut T) -> R) -> Result<R, DispatchError> { ... }
fn mutate_exists<R>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> R,
) -> Result<R, DispatchError> { ... }
fn insert(k: &K, t: T) -> Result<(), DispatchError> { ... }
fn remove(k: &K) -> Result<(), DispatchError> { ... }
}
Expand description
An abstraction of a value stored within storage, but possibly as part of a larger composite item.
Required Methods§
fn get(k: &K) -> T
fn get(k: &K) -> T
Get the item, or its default if it doesn’t yet exist; we make no distinction between the two.
fn try_mutate_exists<R, E>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> Result<R, E>,
) -> Result<R, E>where
E: From<DispatchError>,
fn try_mutate_exists<R, E>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> Result<R, E>,
) -> Result<R, E>where
E: From<DispatchError>,
Maybe mutate the item only if an Ok
value is returned from f
. Do nothing if an Err
is
returned. It is removed or reset to default value if it has been mutated to None
.
f
will always be called with an option representing if the storage item exists (Some<V>
)
or if the storage item does not exist (None
), independent of the QueryType
.
Provided Methods§
fn mutate_exists<R>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> R,
) -> Result<R, DispatchError>
fn mutate_exists<R>( k: &K, f: impl FnOnce(&mut Option<T>) -> R, ) -> Result<R, DispatchError>
Mutate the item, removing or resetting to default value if it has been mutated to None
.
This is infallible as long as the value does not get destroyed.
Object Safety§
Implementors§
impl<S, K, T> StoredMap<K, T> for StorageMapShim<S, K, T>where
S: StorageMap<K, T, Query = T>,
K: FullCodec,
T: FullCodec + Default,
impl<T> StoredMap<<T as Config>::AccountId, <T as Config>::AccountData> for Pallet<T>where
T: Config,
Implement StoredMap for a simple single-item, provide-when-not-default system. This works fine for storing a single item which allows the account to continue existing as long as it’s not empty/default.
Anything more complex will need more sophisticated logic.