Struct pallet_mmr_primitives::Compact[][src]

pub struct Compact<H, T> {
    pub tuple: T,
    // some fields omitted
}

A composition of multiple leaf elements with compact form representation.

When composing together multiple LeafDataProviders you will end up with a tuple of LeafData that each element provides.

However this will cause the leaves to have significant size, while for some use cases it will be enough to prove only one element of the tuple. That's the rationale for Compact struct. We wrap each element of the tuple into DataOrHash and each tuple element is hashed first before constructing the final hash of the entire tuple. This allows you to replace tuple elements you don't care about with their hashes.

Fields

tuple: T

Internal tuple representation.

Implementations

impl<H, T> Compact<H, T>[src]

pub fn new(tuple: T) -> Self[src]

Create a new Compact wrapper for a tuple.

Trait Implementations

impl<H: Clone, T: Clone> Clone for Compact<H, T>[src]

impl<H, T> Debug for Compact<H, T> where
    H: Debug,
    T: Debug
[src]

impl<H, T: Decode> Decode for Compact<H, T>[src]

impl<H, T> Deref for Compact<H, T>[src]

type Target = T

The resulting type after dereferencing.

impl<H, A> FullLeaf for Compact<H, (DataOrHash<H, A>,)> where
    H: Hash,
    A: FullLeaf
[src]

FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

impl<H, A, B> FullLeaf for Compact<H, (DataOrHash<H, A>, DataOrHash<H, B>)> where
    H: Hash,
    A: FullLeaf,
    B: FullLeaf
[src]

FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

impl<H, A, B, C> FullLeaf for Compact<H, (DataOrHash<H, A>, DataOrHash<H, B>, DataOrHash<H, C>)> where
    H: Hash,
    A: FullLeaf,
    B: FullLeaf,
    C: FullLeaf
[src]

FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

impl<H, A, B, C, D> FullLeaf for Compact<H, (DataOrHash<H, A>, DataOrHash<H, B>, DataOrHash<H, C>, DataOrHash<H, D>)> where
    H: Hash,
    A: FullLeaf,
    B: FullLeaf,
    C: FullLeaf,
    D: FullLeaf
[src]

FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

impl<H, A, B, C, D, E> FullLeaf for Compact<H, (DataOrHash<H, A>, DataOrHash<H, B>, DataOrHash<H, C>, DataOrHash<H, D>, DataOrHash<H, E>)> where
    H: Hash,
    A: FullLeaf,
    B: FullLeaf,
    C: FullLeaf,
    D: FullLeaf,
    E: FullLeaf
[src]

FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

impl<H, A> LeafDataProvider for Compact<H, (A,)> where
    H: Hash,
    A: LeafDataProvider
[src]

LeafDataProvider implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

This provides a compact-form encoding for tuples wrapped in Compact.

type LeafData = Compact<H, (DataOrHash<H, A::LeafData>,)>

A type that should end up in the leaf of MMR.

impl<H, A, B> LeafDataProvider for Compact<H, (A, B)> where
    H: Hash,
    A: LeafDataProvider,
    B: LeafDataProvider
[src]

LeafDataProvider implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

This provides a compact-form encoding for tuples wrapped in Compact.

type LeafData = Compact<H, (DataOrHash<H, A::LeafData>, DataOrHash<H, B::LeafData>)>

A type that should end up in the leaf of MMR.

impl<H, A, B, C> LeafDataProvider for Compact<H, (A, B, C)> where
    H: Hash,
    A: LeafDataProvider,
    B: LeafDataProvider,
    C: LeafDataProvider
[src]

LeafDataProvider implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

This provides a compact-form encoding for tuples wrapped in Compact.

type LeafData = Compact<H, (DataOrHash<H, A::LeafData>, DataOrHash<H, B::LeafData>, DataOrHash<H, C::LeafData>)>

A type that should end up in the leaf of MMR.

impl<H, A, B, C, D> LeafDataProvider for Compact<H, (A, B, C, D)> where
    H: Hash,
    A: LeafDataProvider,
    B: LeafDataProvider,
    C: LeafDataProvider,
    D: LeafDataProvider
[src]

LeafDataProvider implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

This provides a compact-form encoding for tuples wrapped in Compact.

type LeafData = Compact<H, (DataOrHash<H, A::LeafData>, DataOrHash<H, B::LeafData>, DataOrHash<H, C::LeafData>, DataOrHash<H, D::LeafData>)>

A type that should end up in the leaf of MMR.

impl<H, A, B, C, D, E> LeafDataProvider for Compact<H, (A, B, C, D, E)> where
    H: Hash,
    A: LeafDataProvider,
    B: LeafDataProvider,
    C: LeafDataProvider,
    D: LeafDataProvider,
    E: LeafDataProvider
[src]

LeafDataProvider implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>

This provides a compact-form encoding for tuples wrapped in Compact.

type LeafData = Compact<H, (DataOrHash<H, A::LeafData>, DataOrHash<H, B::LeafData>, DataOrHash<H, C::LeafData>, DataOrHash<H, D::LeafData>, DataOrHash<H, E::LeafData>)>

A type that should end up in the leaf of MMR.

impl<H: PartialEq, T: PartialEq> PartialEq<Compact<H, T>> for Compact<H, T>[src]

impl<H, T> StructuralPartialEq for Compact<H, T>[src]

Auto Trait Implementations

impl<H, T> RefUnwindSafe for Compact<H, T> where
    H: RefUnwindSafe,
    T: RefUnwindSafe
[src]

impl<H, T> Send for Compact<H, T> where
    H: Send,
    T: Send
[src]

impl<H, T> Sync for Compact<H, T> where
    H: Sync,
    T: Sync
[src]

impl<H, T> Unpin for Compact<H, T> where
    H: Unpin,
    T: Unpin
[src]

impl<H, T> UnwindSafe for Compact<H, T> where
    H: UnwindSafe,
    T: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CheckedConversion for T[src]

impl<T> DecodeAll for T where
    T: Decode
[src]

impl<T> DecodeLimit for T where
    T: Decode
[src]

impl<T> DynClone for T where
    T: Clone
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IsType<T> for T[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    T: From<Outer>,
    Outer: AsRef<T> + AsMut<T> + From<T>, 
[src]

pub fn from_ref(outer: &Outer) -> &T[src]

Get a reference to the inner from the outer.

pub fn from_mut(outer: &mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SaturatedConversion for T

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<T, S> UniqueSaturatedInto<T> for S where
    T: Bounded,
    S: TryInto<T>, 

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,