referrerpolicy=no-referrer-when-downgrade
frame_support::storage::types

Trait KeyGenerator

Source
pub trait KeyGenerator {
    type Key: EncodeLike<Self::Key> + StaticTypeInfo;
    type KArg: Encode + EncodeLike<Self::KArg>;
    type HashFn: FnOnce(&[u8]) -> Vec<u8>;
    type HArg;

    const HASHER_METADATA: &'static [StorageHasherIR];

    // Required methods
    fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>(
        key: KArg,
    ) -> Vec<u8> ;
    fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>(
        key: &KArg,
        hash_fns: Self::HArg,
    ) -> Vec<u8> ;
}
Expand description

A trait that contains the current key as an associated type.

Required Associated Constants§

Required Associated Types§

Source

type Key: EncodeLike<Self::Key> + StaticTypeInfo

Source

type KArg: Encode + EncodeLike<Self::KArg>

Source

type HashFn: FnOnce(&[u8]) -> Vec<u8>

Source

type HArg

Required Methods§

Source

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Given a key tuple, calculate the final key by encoding each element individually and hashing them using the corresponding hasher in the KeyGenerator.

Source

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Given a key tuple, migrate the keys from using the old hashers as given by hash_fns to using the newer hashers as specified by this KeyGenerator.

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.

Implementations on Foreign Types§

Source§

impl<TupleElement0: KeyGeneratorInner> KeyGenerator for (TupleElement0,)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key,)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key,)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn,)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner, TupleElement13: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn, <TupleElement13 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner, TupleElement13: KeyGeneratorInner, TupleElement14: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn, <TupleElement13 as KeyGenerator>::HashFn, <TupleElement14 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner, TupleElement13: KeyGeneratorInner, TupleElement14: KeyGeneratorInner, TupleElement15: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn, <TupleElement13 as KeyGenerator>::HashFn, <TupleElement14 as KeyGenerator>::HashFn, <TupleElement15 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner, TupleElement13: KeyGeneratorInner, TupleElement14: KeyGeneratorInner, TupleElement15: KeyGeneratorInner, TupleElement16: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15, TupleElement16)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key, <TupleElement16 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key, <TupleElement16 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn, <TupleElement13 as KeyGenerator>::HashFn, <TupleElement14 as KeyGenerator>::HashFn, <TupleElement15 as KeyGenerator>::HashFn, <TupleElement16 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Source§

impl<TupleElement0: KeyGeneratorInner, TupleElement1: KeyGeneratorInner, TupleElement2: KeyGeneratorInner, TupleElement3: KeyGeneratorInner, TupleElement4: KeyGeneratorInner, TupleElement5: KeyGeneratorInner, TupleElement6: KeyGeneratorInner, TupleElement7: KeyGeneratorInner, TupleElement8: KeyGeneratorInner, TupleElement9: KeyGeneratorInner, TupleElement10: KeyGeneratorInner, TupleElement11: KeyGeneratorInner, TupleElement12: KeyGeneratorInner, TupleElement13: KeyGeneratorInner, TupleElement14: KeyGeneratorInner, TupleElement15: KeyGeneratorInner, TupleElement16: KeyGeneratorInner, TupleElement17: KeyGeneratorInner> KeyGenerator for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15, TupleElement16, TupleElement17)

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key, <TupleElement16 as KeyGenerator>::Key, <TupleElement17 as KeyGenerator>::Key)

Source§

type KArg = (<TupleElement0 as KeyGenerator>::Key, <TupleElement1 as KeyGenerator>::Key, <TupleElement2 as KeyGenerator>::Key, <TupleElement3 as KeyGenerator>::Key, <TupleElement4 as KeyGenerator>::Key, <TupleElement5 as KeyGenerator>::Key, <TupleElement6 as KeyGenerator>::Key, <TupleElement7 as KeyGenerator>::Key, <TupleElement8 as KeyGenerator>::Key, <TupleElement9 as KeyGenerator>::Key, <TupleElement10 as KeyGenerator>::Key, <TupleElement11 as KeyGenerator>::Key, <TupleElement12 as KeyGenerator>::Key, <TupleElement13 as KeyGenerator>::Key, <TupleElement14 as KeyGenerator>::Key, <TupleElement15 as KeyGenerator>::Key, <TupleElement16 as KeyGenerator>::Key, <TupleElement17 as KeyGenerator>::Key)

Source§

type HArg = (<TupleElement0 as KeyGenerator>::HashFn, <TupleElement1 as KeyGenerator>::HashFn, <TupleElement2 as KeyGenerator>::HashFn, <TupleElement3 as KeyGenerator>::HashFn, <TupleElement4 as KeyGenerator>::HashFn, <TupleElement5 as KeyGenerator>::HashFn, <TupleElement6 as KeyGenerator>::HashFn, <TupleElement7 as KeyGenerator>::HashFn, <TupleElement8 as KeyGenerator>::HashFn, <TupleElement9 as KeyGenerator>::HashFn, <TupleElement10 as KeyGenerator>::HashFn, <TupleElement11 as KeyGenerator>::HashFn, <TupleElement12 as KeyGenerator>::HashFn, <TupleElement13 as KeyGenerator>::HashFn, <TupleElement14 as KeyGenerator>::HashFn, <TupleElement15 as KeyGenerator>::HashFn, <TupleElement16 as KeyGenerator>::HashFn, <TupleElement17 as KeyGenerator>::HashFn)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

fn final_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: KArg, ) -> Vec<u8>

Source§

fn migrate_key<KArg: EncodeLikeTuple<Self::KArg> + TupleToEncodedIter>( key: &KArg, hash_fns: Self::HArg, ) -> Vec<u8>

Implementors§

Source§

impl<H: StorageHasher, K: FullCodec + StaticTypeInfo> KeyGenerator for Key<H, K>

Source§

const HASHER_METADATA: &'static [StorageHasherIR] = _

Source§

type Key = K

Source§

type KArg = (K,)

Source§

type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8>>

Source§

type HArg = (<Key<H, K> as KeyGenerator>::HashFn,)