Enum noble_mmr_primitives::DataOrHash [−][src]
An element representing either full data or it’s 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 it’s compact form, so should be used instead of hashing the encoded form (which will always be non-compact).
Variants
Arbitrary data in it’s full form.
Hash(H::Output)
A hash of some data.
Implementations
impl<H: Hash, L: FullLeaf> DataOrHash<H, L>
[src]
pub fn hash(&self) -> H::Output
[src]
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
impl<H: Clone + Hash, L: Clone> Clone for DataOrHash<H, L> where
H::Output: Clone,
[src]
H::Output: Clone,
fn clone(&self) -> DataOrHash<H, L>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<H: Hash, L> Debug for DataOrHash<H, L> where
H: Debug,
L: Debug,
[src]
H: Debug,
L: Debug,
impl<H: Hash, L: FullLeaf + Decode> Decode for DataOrHash<H, L>
[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: Hash, L: FullLeaf> Encode for DataOrHash<H, L>
[src]
fn encode_to<T: Output + ?Sized>(&self, dest: &mut T)
[src]
pub fn size_hint(&self) -> usize
[src]
pub fn encode(&self) -> Vec<u8, Global>
[src]
pub fn using_encoded<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
[src]
F: FnOnce(&[u8]) -> R,
pub fn encoded_size(&self) -> usize
[src]
impl<H: Hash, L> From<L> for DataOrHash<H, L>
[src]
impl<H: PartialEq + Hash, L: PartialEq> PartialEq<DataOrHash<H, L>> for DataOrHash<H, L> where
H::Output: PartialEq,
[src]
H::Output: PartialEq,
fn eq(&self, other: &DataOrHash<H, L>) -> bool
[src]
fn ne(&self, other: &DataOrHash<H, L>) -> bool
[src]
impl<H: Hash, L> StructuralPartialEq for DataOrHash<H, L>
[src]
Auto Trait Implementations
impl<H, L> RefUnwindSafe for DataOrHash<H, L> where
L: RefUnwindSafe,
<H as Hash>::Output: RefUnwindSafe,
L: RefUnwindSafe,
<H as Hash>::Output: RefUnwindSafe,
impl<H, L> Send for DataOrHash<H, L> where
L: Send,
L: Send,
impl<H, L> Sync for DataOrHash<H, L> where
L: Sync,
L: Sync,
impl<H, L> Unpin for DataOrHash<H, L> where
L: Unpin,
<H as Hash>::Output: Unpin,
L: Unpin,
<H as Hash>::Output: Unpin,
impl<H, L> UnwindSafe for DataOrHash<H, L> where
L: UnwindSafe,
<H as Hash>::Output: UnwindSafe,
L: UnwindSafe,
<H as Hash>::Output: 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<S> Codec for S where
S: Decode + Encode,
[src]
S: Decode + Encode,
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> Downcast for T where
T: Any,
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn as_any(&self) -> &(dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
impl<T> DowncastSync for T where
T: Any + Send + Sync,
T: Any + Send + Sync,
impl<T> DynClone for T where
T: Clone,
[src]
T: Clone,
pub fn __clone_box(&self, Private) -> *mut ()
[src]
impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
T: Encode,
[src]
T: Encode,
impl<'_, T> EncodeLike<&'_ T> for T where
T: Encode,
[src]
T: Encode,
impl<'_, T> EncodeLike<&'_ mut T> for T where
T: Encode,
[src]
T: Encode,
impl<T> EncodeLike<Arc<T>> for T where
T: Encode,
[src]
T: Encode,
impl<T> EncodeLike<Box<T, Global>> for T where
T: Encode,
[src]
T: Encode,
impl<'a, T> EncodeLike<Cow<'a, T>> for T where
T: ToOwned + Encode,
[src]
T: ToOwned + Encode,
impl<T> EncodeLike<Rc<T>> for T where
T: Encode,
[src]
T: Encode,
impl<T> From<!> for T
[src]
impl<T> From<T> for T
[src]
impl<T> FullLeaf for T where
T: Encode + Decode + Clone + PartialEq<T> + Debug,
[src]
T: Encode + Decode + Clone + PartialEq<T> + Debug,
impl<T> Hashable for T where
T: Codec,
[src]
T: Codec,
pub fn blake2_128(&self) -> [u8; 16]
[src]
pub fn blake2_256(&self) -> [u8; 32]
[src]
pub fn blake2_128_concat(&self) -> Vec<u8, Global>
[src]
pub fn twox_128(&self) -> [u8; 16]
[src]
pub fn twox_256(&self) -> [u8; 32]
[src]
pub fn twox_64_concat(&self) -> Vec<u8, Global>
[src]
pub fn identity(&self) -> Vec<u8, Global>
[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> KeyedVec for T where
T: Codec,
[src]
T: Codec,
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>,