pub trait StoredMap<K, T: Default> {
// Required methods
fn get(k: &K) -> T;
fn try_mutate_exists<R, E: From<DispatchError>>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> Result<R, E>,
) -> Result<R, E>;
// 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§
Sourcefn 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.
Sourcefn try_mutate_exists<R, E: From<DispatchError>>(
k: &K,
f: impl FnOnce(&mut Option<T>) -> Result<R, E>,
) -> Result<R, E>
fn try_mutate_exists<R, E: From<DispatchError>>( k: &K, f: impl FnOnce(&mut Option<T>) -> Result<R, E>, ) -> Result<R, E>
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§
Sourcefn 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.
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.