Struct pallet_share_distributor::storage::Key  
pub struct Key<Hasher, KeyType>(_);Expand description
A type used exclusively by storage maps as their key type.
The final key generated has the following form:
Hasher1(encode(key1))
    ++ Hasher2(encode(key2))
    ++ ...
    ++ HasherN(encode(keyN))Trait Implementations§
§impl<H, K> KeyGenerator for Key<H, K>where
    H: StorageHasher,
    K: FullCodec + StaticTypeInfo,
 
impl<H, K> KeyGenerator for Key<H, K>where
    H: StorageHasher,
    K: FullCodec + StaticTypeInfo,
type Key = K
type KArg = (K,)
type HashFn = Box<dyn FnOnce(&[u8]) -> Vec<u8, Global> + 'static, Global>
type HArg = (<Key<H, K> as KeyGenerator>::HashFn,)
const HASHER_METADATA: &'static [StorageHasher] = &[H::METADATA]
§fn final_key<KArg>(key: KArg) -> Vec<u8, Global> ⓘwhere
    KArg: EncodeLikeTuple<<Key<H, K> as KeyGenerator>::KArg> + TupleToEncodedIter,
 
fn final_key<KArg>(key: KArg) -> Vec<u8, Global> ⓘwhere
    KArg: EncodeLikeTuple<<Key<H, K> as KeyGenerator>::KArg> + TupleToEncodedIter,
Given a 
key tuple, calculate the final key by encoding each element individually and
hashing them using the corresponding hasher in the KeyGenerator. Read more§fn migrate_key<KArg>(
    key: &KArg,
    hash_fns: <Key<H, K> as KeyGenerator>::HArg
) -> Vec<u8, Global> ⓘwhere
    KArg: EncodeLikeTuple<<Key<H, K> as KeyGenerator>::KArg> + TupleToEncodedIter,
 
fn migrate_key<KArg>(
    key: &KArg,
    hash_fns: <Key<H, K> as KeyGenerator>::HArg
) -> Vec<u8, Global> ⓘwhere
    KArg: EncodeLikeTuple<<Key<H, K> as KeyGenerator>::KArg> + TupleToEncodedIter,
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. Read more§impl<H, K> KeyGeneratorMaxEncodedLen for Key<H, K>where
    H: StorageHasher,
    K: FullCodec + MaxEncodedLen + StaticTypeInfo,
 
impl<H, K> KeyGeneratorMaxEncodedLen for Key<H, K>where
    H: StorageHasher,
    K: FullCodec + MaxEncodedLen + StaticTypeInfo,
fn key_max_encoded_len() -> usize
§impl<H, K> ReversibleKeyGenerator for Key<H, K>where
    H: ReversibleStorageHasher,
    K: FullCodec + StaticTypeInfo,
 
impl<H, K> ReversibleKeyGenerator for Key<H, K>where
    H: ReversibleStorageHasher,
    K: FullCodec + StaticTypeInfo,
type ReversibleHasher = H
fn decode_final_key(
    key_material: &[u8]
) -> Result<(<Key<H, K> as KeyGenerator>::Key, &[u8]), Error>
Auto Trait Implementations§
impl<Hasher, KeyType> RefUnwindSafe for Key<Hasher, KeyType>where
    Hasher: RefUnwindSafe,
    KeyType: RefUnwindSafe,
impl<Hasher, KeyType> Send for Key<Hasher, KeyType>where
    Hasher: Send,
    KeyType: Send,
impl<Hasher, KeyType> Sync for Key<Hasher, KeyType>where
    Hasher: Sync,
    KeyType: Sync,
impl<Hasher, KeyType> Unpin for Key<Hasher, KeyType>where
    Hasher: Unpin,
    KeyType: Unpin,
impl<Hasher, KeyType> UnwindSafe for Key<Hasher, KeyType>where
    Hasher: UnwindSafe,
    KeyType: UnwindSafe,
Blanket Implementations§
§impl<T> CheckedConversion for T
 
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
 
fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
 
fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
§impl<T> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere
    T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
 
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert 
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert 
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more§fn as_any(&self) -> &(dyn Any + 'static)
 
fn as_any(&self) -> &(dyn Any + 'static)
Convert 
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert 
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read moresource§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
 
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
 
fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
 
fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of 
T. Read more§impl<T> SaturatedConversion for T
 
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
 
fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
 
fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of 
T. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
 
impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
 
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct 
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
 
fn is_in_subset(&self) -> bool
Checks if 
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
 
fn to_subset_unchecked(&self) -> SS
Use with care! Same as 
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
 
fn from_subset(element: &SS) -> SP
The inclusion map: converts 
self to the equivalent element of its superset.§impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
 
impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
 
fn unchecked_into(self) -> T
The counterpart to 
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
 
impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
§fn unique_saturated_into(self) -> T
 
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of 
T.§impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
 
impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
§fn unique_saturated_into(self) -> T
 
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of 
T.