Enum sp_mmr_primitives::DataOrHash
source · 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>where
H::Output: Clone,
impl<H: Clone + Hash, L: Clone> Clone for DataOrHash<H, L>where H::Output: Clone,
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: 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.
§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
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where I: Input,
Attempt to skip the encoded value from input. Read more
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. 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.
§fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere F: FnOnce(&[u8]) -> R,
Convert self to a slice and then invoke the given closure with it.
§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>
source§impl<H: PartialEq + Hash, L: PartialEq> PartialEq<DataOrHash<H, L>> for DataOrHash<H, L>where
H::Output: PartialEq,
impl<H: PartialEq + Hash, L: PartialEq> PartialEq<DataOrHash<H, L>> for DataOrHash<H, L>where H::Output: PartialEq,
source§fn eq(&self, other: &DataOrHash<H, L>) -> bool
fn eq(&self, other: &DataOrHash<H, L>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl<H: Hash, L> StructuralPartialEq for DataOrHash<H, L>
Auto Trait Implementations§
impl<H, L> RefUnwindSafe for DataOrHash<H, L>where L: RefUnwindSafe, <H as Hash>::Output: RefUnwindSafe,
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>where L: Unpin, <H as Hash>::Output: Unpin,
impl<H, L> UnwindSafe for DataOrHash<H, L>where L: UnwindSafe, <H as Hash>::Output: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Decode
Self
and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere T: Decode,
§impl<T> FromFd for Twhere
T: From<OwnedFd>,
impl<T> FromFd for Twhere T: From<OwnedFd>,
§impl<T> FromFilelike for Twhere
T: From<OwnedFd>,
impl<T> FromFilelike for Twhere T: From<OwnedFd>,
§fn from_filelike(owned: OwnedFd) -> T
fn from_filelike(owned: OwnedFd) -> T
Constructs a new instance of
Self
from the given filelike object. Read more§fn from_into_filelike<Owned>(owned: Owned) -> Twhere
Owned: IntoFilelike,
fn from_into_filelike<Owned>(owned: Owned) -> Twhere Owned: IntoFilelike,
Constructs a new instance of
Self
from the given filelike object
converted from into_owned
. Read more§impl<T> FromSocketlike for Twhere
T: From<OwnedFd>,
impl<T> FromSocketlike for Twhere T: From<OwnedFd>,
§fn from_socketlike(owned: OwnedFd) -> T
fn from_socketlike(owned: OwnedFd) -> T
Constructs a new instance of
Self
from the given socketlike object.§fn from_into_socketlike<Owned>(owned: Owned) -> Twhere
Owned: IntoSocketlike,
fn from_into_socketlike<Owned>(owned: Owned) -> Twhere Owned: IntoSocketlike,
Constructs a new instance of
Self
from the given socketlike object
converted from into_owned
.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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere T: Codec,
§impl<T> Pointable for T
impl<T> Pointable 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 Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.