[][src]Trait frame_support::storage::StorageMap

pub trait StorageMap<K: FullEncode, V: FullCodec> {
    type Query;
    fn hashed_key_for<KeyArg: EncodeLike<K>>(key: KeyArg) -> Vec<u8>;
fn contains_key<KeyArg: EncodeLike<K>>(key: KeyArg) -> bool;
fn get<KeyArg: EncodeLike<K>>(key: KeyArg) -> Self::Query;
fn swap<KeyArg1: EncodeLike<K>, KeyArg2: EncodeLike<K>>(
        key1: KeyArg1,
        key2: KeyArg2
    );
fn insert<KeyArg: EncodeLike<K>, ValArg: EncodeLike<V>>(
        key: KeyArg,
        val: ValArg
    );
fn remove<KeyArg: EncodeLike<K>>(key: KeyArg);
fn mutate<KeyArg: EncodeLike<K>, R, F: FnOnce(&mut Self::Query) -> R>(
        key: KeyArg,
        f: F
    ) -> R;
fn try_mutate<KeyArg: EncodeLike<K>, R, E, F: FnOnce(&mut Self::Query) -> Result<R, E>>(
        key: KeyArg,
        f: F
    ) -> Result<R, E>;
fn mutate_exists<KeyArg: EncodeLike<K>, R, F: FnOnce(&mut Option<V>) -> R>(
        key: KeyArg,
        f: F
    ) -> R;
fn try_mutate_exists<KeyArg: EncodeLike<K>, R, E, F: FnOnce(&mut Option<V>) -> Result<R, E>>(
        key: KeyArg,
        f: F
    ) -> Result<R, E>;
fn take<KeyArg: EncodeLike<K>>(key: KeyArg) -> Self::Query;
fn append<Item, EncodeLikeItem, EncodeLikeKey>(
        key: EncodeLikeKey,
        item: EncodeLikeItem
    )
    where
        EncodeLikeKey: EncodeLike<K>,
        Item: Encode,
        EncodeLikeItem: EncodeLike<Item>,
        V: StorageAppend<Item>
;
fn decode_len<KeyArg: EncodeLike<K>>(
        key: KeyArg
    ) -> Result<usize, &'static str>
    where
        V: DecodeLength + Len
;
fn migrate_key<OldHasher: StorageHasher, KeyArg: EncodeLike<K>>(
        key: KeyArg
    ) -> Option<V>; fn migrate_key_from_blake<KeyArg: EncodeLike<K>>(key: KeyArg) -> Option<V> { ... } }

A strongly-typed map in storage.

Details on implementation can be found at [generator::StorageMap]

Associated Types

type Query

The type that get/take return.

Loading content...

Required methods

fn hashed_key_for<KeyArg: EncodeLike<K>>(key: KeyArg) -> Vec<u8>

Get the storage key used to fetch a value corresponding to a specific key.

fn contains_key<KeyArg: EncodeLike<K>>(key: KeyArg) -> bool

Does the value (explicitly) exist in storage?

fn get<KeyArg: EncodeLike<K>>(key: KeyArg) -> Self::Query

Load the value associated with the given key from the map.

fn swap<KeyArg1: EncodeLike<K>, KeyArg2: EncodeLike<K>>(
    key1: KeyArg1,
    key2: KeyArg2
)

Swap the values of two keys.

fn insert<KeyArg: EncodeLike<K>, ValArg: EncodeLike<V>>(
    key: KeyArg,
    val: ValArg
)

Store a value to be associated with the given key from the map.

fn remove<KeyArg: EncodeLike<K>>(key: KeyArg)

Remove the value under a key.

fn mutate<KeyArg: EncodeLike<K>, R, F: FnOnce(&mut Self::Query) -> R>(
    key: KeyArg,
    f: F
) -> R

Mutate the value under a key.

fn try_mutate<KeyArg: EncodeLike<K>, R, E, F: FnOnce(&mut Self::Query) -> Result<R, E>>(
    key: KeyArg,
    f: F
) -> Result<R, E>

Mutate the item, only if an Ok value is returned.

fn mutate_exists<KeyArg: EncodeLike<K>, R, F: FnOnce(&mut Option<V>) -> R>(
    key: KeyArg,
    f: F
) -> R

Mutate the value under a key. Deletes the item if mutated to a None.

fn try_mutate_exists<KeyArg: EncodeLike<K>, R, E, F: FnOnce(&mut Option<V>) -> Result<R, E>>(
    key: KeyArg,
    f: F
) -> Result<R, E>

Mutate the item, only if an Ok value is returned. Deletes the item if mutated to a None.

fn take<KeyArg: EncodeLike<K>>(key: KeyArg) -> Self::Query

Take the value under a key.

fn append<Item, EncodeLikeItem, EncodeLikeKey>(
    key: EncodeLikeKey,
    item: EncodeLikeItem
) where
    EncodeLikeKey: EncodeLike<K>,
    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 decode_len<KeyArg: EncodeLike<K>>(key: KeyArg) -> Result<usize, &'static str> where
    V: DecodeLength + Len

Read the length of the value in a fast way, without decoding the entire value.

T is required to implement Codec::DecodeLength.

Note that 0 is returned as the default value if no encoded value exists at the given key. Therefore, this function cannot be used as a sign of existence. use the ::contains_key() function for this purpose.

fn migrate_key<OldHasher: StorageHasher, KeyArg: EncodeLike<K>>(
    key: KeyArg
) -> Option<V>

Migrate an item with the given key from a defunct OldHasher to the current hasher.

If the key doesn't exist, then it's a no-op. If it does, then it returns its value.

Loading content...

Provided methods

fn migrate_key_from_blake<KeyArg: EncodeLike<K>>(key: KeyArg) -> Option<V>

Migrate an item with the given key from a blake2_256 hasher to the current hasher.

If the key doesn't exist, then it's a no-op. If it does, then it returns its value.

Loading content...

Implementors

impl<K: FullEncode, V: FullCodec, G: StorageMap<K, V>> StorageMap<K, V> for G[src]

type Query = G::Query

Loading content...