Struct ProofRetainer
pub struct ProofRetainer<K = AddedRemovedKeys> { /* private fields */ }
Expand description
Proof retainer is used to store proofs during merkle trie construction.
It is intended to be used within the HashBuilder
.
When using the retain_leaf_proof
, retain_extension_proof
, and retain_branch_proof
methods, it is required that the calls are ordered such that proofs of parent nodes are
retained after their children.
Implementations§
§impl ProofRetainer
impl ProofRetainer
pub fn new(targets: Vec<Nibbles>) -> ProofRetainer
pub fn new(targets: Vec<Nibbles>) -> ProofRetainer
Create new retainer with target nibbles.
§impl<K> ProofRetainer<K>
impl<K> ProofRetainer<K>
pub fn with_added_removed_keys<K2>(
self,
added_removed_keys: Option<K2>,
) -> ProofRetainer<K2>
pub fn with_added_removed_keys<K2>( self, added_removed_keys: Option<K2>, ) -> ProofRetainer<K2>
Configures the retainer to retain proofs for certain nodes which would otherwise fall outside the target set, when those nodes might be required to calculate the state root when keys have been added or removed to the trie.
If None is given then retention of extra proofs is disabled.
§impl<K> ProofRetainer<K>where
K: AsRef<AddedRemovedKeys>,
impl<K> ProofRetainer<K>where
K: AsRef<AddedRemovedKeys>,
pub fn matches(&self, prefix: &Nibbles) -> bool
pub fn matches(&self, prefix: &Nibbles) -> bool
Returns true
if the given prefix matches the retainer target.
pub fn into_proof_nodes(self) -> ProofNodes
pub fn into_proof_nodes(self) -> ProofNodes
Returns all collected proofs.
pub fn retain(&mut self, prefix: &Nibbles, proof: &[u8])
👎Deprecated
pub fn retain(&mut self, prefix: &Nibbles, proof: &[u8])
Retain the proof if the key matches any of the targets.
Usage of this method should be replaced with usage of the following methods, each dependent on the node-type whose proof being retained:
retain_empty_root_proof
retain_leaf_proof
retain_extension_proof
retain_branch_proof
pub fn retain_empty_root_proof(&mut self)
pub fn retain_empty_root_proof(&mut self)
Retains a proof for an empty root.
pub fn retain_leaf_proof(&mut self, path: &Nibbles, proof: &[u8])
pub fn retain_leaf_proof(&mut self, path: &Nibbles, proof: &[u8])
Retains a proof for a leaf node.
pub fn retain_extension_proof(
&mut self,
path: &Nibbles,
short_key: &Nibbles,
proof: &[u8],
)
pub fn retain_extension_proof( &mut self, path: &Nibbles, short_key: &Nibbles, proof: &[u8], )
Retains a proof for an extension node.
pub fn retain_branch_proof(
&mut self,
path: &Nibbles,
state_mask: TrieMask,
proof: &[u8],
)
pub fn retain_branch_proof( &mut self, path: &Nibbles, state_mask: TrieMask, proof: &[u8], )
Retains a proof for a branch node.
Trait Implementations§
§impl<K> Clone for ProofRetainer<K>where
K: Clone,
impl<K> Clone for ProofRetainer<K>where
K: Clone,
§fn clone(&self) -> ProofRetainer<K>
fn clone(&self) -> ProofRetainer<K>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl<K> Debug for ProofRetainer<K>where
K: Debug,
impl<K> Debug for ProofRetainer<K>where
K: Debug,
§impl<K> Default for ProofRetainer<K>where
K: Default,
impl<K> Default for ProofRetainer<K>where
K: Default,
§fn default() -> ProofRetainer<K>
fn default() -> ProofRetainer<K>
§impl FromIterator<Nibbles> for ProofRetainer
impl FromIterator<Nibbles> for ProofRetainer
§fn from_iter<T>(iter: T) -> ProofRetainerwhere
T: IntoIterator<Item = Nibbles>,
fn from_iter<T>(iter: T) -> ProofRetainerwhere
T: IntoIterator<Item = Nibbles>,
Auto Trait Implementations§
impl<K> Freeze for ProofRetainer<K>where
K: Freeze,
impl<K> RefUnwindSafe for ProofRetainer<K>where
K: RefUnwindSafe,
impl<K> Send for ProofRetainer<K>where
K: Send,
impl<K> Sync for ProofRetainer<K>where
K: Sync,
impl<K> Unpin for ProofRetainer<K>where
K: Unpin,
impl<K> UnwindSafe for ProofRetainer<K>where
K: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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> ⓘ
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> ⓘ
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 more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> MaybeDebug for Twhere
T: Debug,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.