Struct pallet_mmr_primitives::Compact [−][src]
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]
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]
H: Debug,
T: Debug,
impl<H, T: Decode> Decode for Compact<H, T>
[src]
fn decode<I: Input>(value: &mut I) -> Result<Self, Error>
[src]
pub fn skip<I>(input: &mut I) -> Result<(), Error> where
I: Input,
[src]
I: Input,
pub fn encoded_fixed_size() -> Option<usize>
[src]
impl<H, T> Deref for Compact<H, T>
[src]
impl<H, A> FullLeaf for Compact<H, (DataOrHash<H, A>,)> where
H: Hash,
A: FullLeaf,
[src]
H: Hash,
A: FullLeaf,
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]
H: Hash,
A: FullLeaf,
B: FullLeaf,
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]
H: Hash,
A: FullLeaf,
B: FullLeaf,
C: FullLeaf,
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]
H: Hash,
A: FullLeaf,
B: FullLeaf,
C: FullLeaf,
D: FullLeaf,
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]
H: Hash,
A: FullLeaf,
B: FullLeaf,
C: FullLeaf,
D: FullLeaf,
E: FullLeaf,
FullLeaf implementation for Compact<H, (DataOrHash<H, Tuple>, ...)>
impl<H, A> LeafDataProvider for Compact<H, (A,)> where
H: Hash,
A: LeafDataProvider,
[src]
H: Hash,
A: LeafDataProvider,
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.
fn leaf_data() -> Self::LeafData
[src]
impl<H, A, B> LeafDataProvider for Compact<H, (A, B)> where
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
[src]
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
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.
fn leaf_data() -> Self::LeafData
[src]
impl<H, A, B, C> LeafDataProvider for Compact<H, (A, B, C)> where
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
C: LeafDataProvider,
[src]
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
C: LeafDataProvider,
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.
fn leaf_data() -> Self::LeafData
[src]
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]
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
C: LeafDataProvider,
D: LeafDataProvider,
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.
fn leaf_data() -> Self::LeafData
[src]
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]
H: Hash,
A: LeafDataProvider,
B: LeafDataProvider,
C: LeafDataProvider,
D: LeafDataProvider,
E: LeafDataProvider,
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.
fn leaf_data() -> Self::LeafData
[src]
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]
H: RefUnwindSafe,
T: RefUnwindSafe,
impl<H, T> Send for Compact<H, T> where
H: Send,
T: Send,
[src]
H: Send,
T: Send,
impl<H, T> Sync for Compact<H, T> where
H: Sync,
T: Sync,
[src]
H: Sync,
T: Sync,
impl<H, T> Unpin for Compact<H, T> where
H: Unpin,
T: Unpin,
[src]
H: Unpin,
T: Unpin,
impl<H, T> UnwindSafe for Compact<H, T> where
H: UnwindSafe,
T: UnwindSafe,
[src]
H: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CheckedConversion for T
[src]
pub fn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
[src]
Self: TryFrom<T>,
pub fn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
[src]
Self: TryInto<T>,
impl<T> DecodeAll for T where
T: Decode,
[src]
T: Decode,
impl<T> DecodeLimit for T where
T: Decode,
[src]
T: Decode,
pub fn decode_all_with_depth_limit(limit: u32, input: &[u8]) -> Result<T, Error>
[src]
pub fn decode_with_depth_limit(limit: u32, input: &[u8]) -> Result<T, Error>
[src]
impl<T> DynClone for T where
T: Clone,
[src]
T: Clone,
pub fn __clone_box(&self, Private) -> *mut ()
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> IsType<T> for T
[src]
pub fn from_ref(t: &T) -> &T
[src]
pub fn into_ref(&self) -> &T
[src]
pub fn from_mut(t: &mut T) -> &mut T
[src]
pub fn into_mut(&mut self) -> &mut T
[src]
impl<T, Outer> IsWrappedBy<Outer> for T where
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
[src]
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
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,
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,
T: Debug,
impl<T> MaybeRefUnwindSafe for T where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> SaturatedConversion for T
pub fn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
Self: UniqueSaturatedFrom<T>,
pub fn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
Self: UniqueSaturatedInto<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
[src]
T: UncheckedFrom<S>,
pub fn unchecked_into(self) -> T
[src]
impl<T, S> UniqueSaturatedInto<T> for S where
T: Bounded,
S: TryInto<T>,
T: Bounded,
S: TryInto<T>,
pub fn unique_saturated_into(self) -> T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,