Trait frame_support::storage::StorageNMap
source · [−]pub trait StorageNMap<K: KeyGenerator, V: FullCodec> {
type Query;
Show 17 methods
fn hashed_key_for<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Vec<u8>ⓘ;
fn contains_key<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> bool;
fn get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query;
fn try_get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Result<V, ()>;
fn swap<KOther, KArg1, KArg2>(key1: KArg1, key2: KArg2)
where
KOther: KeyGenerator,
KArg1: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
KArg2: EncodeLikeTuple<KOther::KArg> + TupleToEncodedIter;
fn insert<KArg, VArg>(key: KArg, val: VArg)
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
VArg: EncodeLike<V>;
fn remove<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(key: KArg);
fn remove_prefix<KP>(
partial_key: KP,
limit: Option<u32>
) -> KillStorageResult
where
K: HasKeyPrefix<KP>;
fn iter_prefix_values<KP>(partial_key: KP) -> PrefixIterator<V>ⓘNotable traits for PrefixIterator<T, OnRemoval>impl<T, OnRemoval: PrefixIteratorOnRemoval> Iterator for PrefixIterator<T, OnRemoval> type Item = T;
where
K: HasKeyPrefix<KP>;
fn mutate<KArg, R, F>(key: KArg, f: F) -> R
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> R;
fn try_mutate<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E>
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> Result<R, E>;
fn mutate_exists<KArg, R, F>(key: KArg, f: F) -> R
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> R;
fn try_mutate_exists<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E>
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> Result<R, E>;
fn take<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query;
fn append<Item, EncodeLikeItem, KArg>(key: KArg, item: EncodeLikeItem)
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
Item: Encode,
EncodeLikeItem: EncodeLike<Item>,
V: StorageAppend<Item>;
fn migrate_keys<KArg>(key: KArg, hash_fns: K::HArg) -> Option<V>
where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter;
fn decode_len<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Option<usize>
where
V: StorageDecodeLength,
{ ... }
}
Expand description
An implementation of a map with an arbitrary number of keys.
Details of implementation can be found at [generator::StorageNMap
].
Associated Types
Required methods
fn hashed_key_for<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Vec<u8>ⓘ
fn hashed_key_for<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Vec<u8>ⓘ
Get the storage key used to fetch a value corresponding to a specific key.
fn contains_key<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> bool
fn contains_key<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> bool
Does the value (explicitly) exist in storage?
fn get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query
fn get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query
Load the value associated with the given key from the map.
fn try_get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Result<V, ()>
fn try_get<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Result<V, ()>
Try to get the value for the given key from the map.
Returns Ok
if it exists, Err
if not.
fn swap<KOther, KArg1, KArg2>(key1: KArg1, key2: KArg2) where
KOther: KeyGenerator,
KArg1: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
KArg2: EncodeLikeTuple<KOther::KArg> + TupleToEncodedIter,
fn swap<KOther, KArg1, KArg2>(key1: KArg1, key2: KArg2) where
KOther: KeyGenerator,
KArg1: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
KArg2: EncodeLikeTuple<KOther::KArg> + TupleToEncodedIter,
Swap the values of two keys.
fn insert<KArg, VArg>(key: KArg, val: VArg) where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
VArg: EncodeLike<V>,
fn insert<KArg, VArg>(key: KArg, val: VArg) where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
VArg: EncodeLike<V>,
Store a value to be associated with the given key from the map.
fn remove<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(key: KArg)
fn remove<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(key: KArg)
Remove the value under a key.
fn remove_prefix<KP>(partial_key: KP, limit: Option<u32>) -> KillStorageResult where
K: HasKeyPrefix<KP>,
fn remove_prefix<KP>(partial_key: KP, limit: Option<u32>) -> KillStorageResult where
K: HasKeyPrefix<KP>,
Remove all values under the partial prefix key.
fn iter_prefix_values<KP>(partial_key: KP) -> PrefixIterator<V>ⓘNotable traits for PrefixIterator<T, OnRemoval>impl<T, OnRemoval: PrefixIteratorOnRemoval> Iterator for PrefixIterator<T, OnRemoval> type Item = T;
where
K: HasKeyPrefix<KP>,
fn iter_prefix_values<KP>(partial_key: KP) -> PrefixIterator<V>ⓘNotable traits for PrefixIterator<T, OnRemoval>impl<T, OnRemoval: PrefixIteratorOnRemoval> Iterator for PrefixIterator<T, OnRemoval> type Item = T;
where
K: HasKeyPrefix<KP>,
impl<T, OnRemoval: PrefixIteratorOnRemoval> Iterator for PrefixIterator<T, OnRemoval> type Item = T;
Iterate over values that share the partial prefix key.
fn mutate<KArg, R, F>(key: KArg, f: F) -> R where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> R,
fn mutate<KArg, R, F>(key: KArg, f: F) -> R where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> R,
Mutate the value under a key.
fn try_mutate<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> Result<R, E>,
fn try_mutate<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Self::Query) -> Result<R, E>,
Mutate the item, only if an Ok
value is returned.
fn mutate_exists<KArg, R, F>(key: KArg, f: F) -> R where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> R,
fn mutate_exists<KArg, R, F>(key: KArg, f: F) -> R where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> R,
Mutate the value under a key.
Deletes the item if mutated to a None
.
fn try_mutate_exists<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> Result<R, E>,
fn try_mutate_exists<KArg, R, E, F>(key: KArg, f: F) -> Result<R, E> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
F: FnOnce(&mut Option<V>) -> Result<R, E>,
Mutate the item, only if an Ok
value is returned. Deletes the item if mutated to a None
.
fn take<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query
fn take<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Self::Query
Take the value under a key.
fn append<Item, EncodeLikeItem, KArg>(key: KArg, item: EncodeLikeItem) where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
Item: Encode,
EncodeLikeItem: EncodeLike<Item>,
V: StorageAppend<Item>,
fn append<Item, EncodeLikeItem, KArg>(key: KArg, item: EncodeLikeItem) where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
Item: Encode,
EncodeLikeItem: EncodeLike<Item>,
V: StorageAppend<Item>,
Append the given items to the value in the storage.
V
is required to implement codec::EncodeAppend
.
Warning
If the storage item is not encoded properly, the storage will be overwritten
and set to [item]
. Any default value set for the storage item will be ignored
on overwrite.
fn migrate_keys<KArg>(key: KArg, hash_fns: K::HArg) -> Option<V> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
fn migrate_keys<KArg>(key: KArg, hash_fns: K::HArg) -> Option<V> where
KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter,
Migrate an item with the given key
from defunct hash_fns
to the current hashers.
If the key doesn’t exist, then it’s a no-op. If it does, then it returns its value.
Provided methods
fn decode_len<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Option<usize> where
V: StorageDecodeLength,
fn decode_len<KArg: EncodeLikeTuple<K::KArg> + TupleToEncodedIter>(
key: KArg
) -> Option<usize> where
V: StorageDecodeLength,
Read the length of the storage value without decoding the entire value under the
given key
.
V
is required to implement StorageDecodeLength
.
If the value does not exists or it fails to decode the length, None
is returned.
Otherwise Some(len)
is returned.
Warning
None
does not mean that get()
does not return a value. The default value is completly
ignored by this function.