pub enum DataOrHash<H: Hash, L> {
Data(L),
Hash(H::Output),
}
Expand description
An element representing either full data or its hash.
See Compact to see how it may be used in practice to reduce the size of proofs in case multiple LeafDataProviders are composed together. This is also used internally by the MMR to differentiate leaf nodes (data) and inner nodes (hashes).
DataOrHash::hash method calculates the hash of this element in its compact form, so should be used instead of hashing the encoded form (which will always be non-compact).
Variants§
Implementations§
source§impl<H: Hash, L: FullLeaf> DataOrHash<H, L>
impl<H: Hash, L: FullLeaf> DataOrHash<H, L>
sourcepub fn hash(&self) -> H::Output
pub fn hash(&self) -> H::Output
Retrieve a hash of this item.
Depending on the node type it’s going to either be a contained value for DataOrHash::Hash node, or a hash of SCALE-encoded DataOrHash::Data data.
Trait Implementations§
source§impl<H: Clone + Hash, L: Clone> Clone for DataOrHash<H, L>
impl<H: Clone + Hash, L: Clone> Clone for DataOrHash<H, L>
source§fn clone(&self) -> DataOrHash<H, L>
fn clone(&self) -> DataOrHash<H, L>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<H, L> Debug for DataOrHash<H, L>
impl<H, L> Debug for DataOrHash<H, L>
source§impl<H: Hash, L: FullLeaf + Decode> Decode for DataOrHash<H, L>
impl<H: Hash, L: FullLeaf + Decode> Decode for DataOrHash<H, L>
source§fn decode<I: Input>(value: &mut I) -> Result<Self, Error>
fn decode<I: Input>(value: &mut I) -> Result<Self, Error>
Attempt to deserialise the value from input.
source§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
source§impl<H: Hash, L: FullLeaf> Encode for DataOrHash<H, L>
impl<H: Hash, L: FullLeaf> Encode for DataOrHash<H, L>
source§fn encode_to<T: Output + ?Sized>(&self, dest: &mut T)
fn encode_to<T: Output + ?Sized>(&self, dest: &mut T)
Convert self to a slice and append it to the destination.
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl<H: Hash, L> From<L> for DataOrHash<H, L>
impl<H: Hash, L> From<L> for DataOrHash<H, L>
impl<H: Hash, L> StructuralPartialEq for DataOrHash<H, L>
Auto Trait Implementations§
impl<H, L> Freeze for DataOrHash<H, L>
impl<H, L> RefUnwindSafe for DataOrHash<H, L>
impl<H, L> Send for DataOrHash<H, L>where
L: Send,
impl<H, L> Sync for DataOrHash<H, L>where
L: Sync,
impl<H, L> Unpin for DataOrHash<H, L>
impl<H, L> UnwindSafe for DataOrHash<H, L>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
source§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>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§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 moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.