pub enum ConfigurableSparseTrie {
Arena(ArenaParallelSparseTrie),
HashMap(ParallelSparseTrie),
}Expand description
An enum wrapping two different SparseTrie implementations, forwarding all calls to the
underlying trie.
Variants§
Arena(ArenaParallelSparseTrie)
The arena-based parallel sparse trie implementation.
HashMap(ParallelSparseTrie)
The hash-map-based parallel sparse trie implementation.
Trait Implementations§
Source§impl Clone for ConfigurableSparseTrie
impl Clone for ConfigurableSparseTrie
Source§fn clone(&self) -> ConfigurableSparseTrie
fn clone(&self) -> ConfigurableSparseTrie
Returns a duplicate 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 Debug for ConfigurableSparseTrie
impl Debug for ConfigurableSparseTrie
Source§impl Default for ConfigurableSparseTrie
impl Default for ConfigurableSparseTrie
Source§impl SparseTrie for ConfigurableSparseTrie
impl SparseTrie for ConfigurableSparseTrie
Source§fn set_root(
&mut self,
root: TrieNodeV2,
masks: Option<BranchNodeMasks>,
retain_updates: bool,
) -> SparseTrieResult<()>
fn set_root( &mut self, root: TrieNodeV2, masks: Option<BranchNodeMasks>, retain_updates: bool, ) -> SparseTrieResult<()>
Configures the trie to have the given root node revealed. Read more
Source§fn set_updates(&mut self, retain_updates: bool)
fn set_updates(&mut self, retain_updates: bool)
Configures the trie to retain information about updates. Read more
Source§fn reserve_nodes(&mut self, additional: usize)
fn reserve_nodes(&mut self, additional: usize)
Reserves capacity for additional trie nodes. Read more
Source§fn reveal_nodes(
&mut self,
nodes: &mut [ProofTrieNodeV2],
) -> SparseTrieResult<()>
fn reveal_nodes( &mut self, nodes: &mut [ProofTrieNodeV2], ) -> SparseTrieResult<()>
Reveals one or more trie nodes if they have not been revealed before. Read more
Source§fn update_leaf<P: TrieNodeProvider>(
&mut self,
full_path: Nibbles,
value: Vec<u8>,
provider: P,
) -> SparseTrieResult<()>
fn update_leaf<P: TrieNodeProvider>( &mut self, full_path: Nibbles, value: Vec<u8>, provider: P, ) -> SparseTrieResult<()>
Updates the value of a leaf node at the specified path. Read more
Source§fn remove_leaf<P: TrieNodeProvider>(
&mut self,
full_path: &Nibbles,
provider: P,
) -> SparseTrieResult<()>
fn remove_leaf<P: TrieNodeProvider>( &mut self, full_path: &Nibbles, provider: P, ) -> SparseTrieResult<()>
Removes a leaf node at the specified path. Read more
Source§fn is_root_cached(&self) -> bool
fn is_root_cached(&self) -> bool
Returns true if the root node is cached and does not need any recomputation.
Source§fn update_subtrie_hashes(&mut self)
fn update_subtrie_hashes(&mut self)
Recalculates and updates the RLP hashes of subtries deeper than a certain level. The level
is defined in the implementation. Read more
Source§fn get_leaf_value(&self, full_path: &Nibbles) -> Option<&Vec<u8>>
fn get_leaf_value(&self, full_path: &Nibbles) -> Option<&Vec<u8>>
Retrieves a reference to the leaf value at the specified path. Read more
Source§fn find_leaf(
&self,
full_path: &Nibbles,
expected_value: Option<&Vec<u8>>,
) -> Result<LeafLookup, LeafLookupError>
fn find_leaf( &self, full_path: &Nibbles, expected_value: Option<&Vec<u8>>, ) -> Result<LeafLookup, LeafLookupError>
Attempts to find a leaf node at the specified path. Read more
Source§fn updates_ref(&self) -> Cow<'_, SparseTrieUpdates>
fn updates_ref(&self) -> Cow<'_, SparseTrieUpdates>
Returns a reference to the current sparse trie updates. Read more
Source§fn take_updates(&mut self) -> SparseTrieUpdates
fn take_updates(&mut self) -> SparseTrieUpdates
Consumes and returns the currently accumulated trie updates. Read more
Source§fn wipe(&mut self)
fn wipe(&mut self)
Removes all nodes and values from the trie, resetting it to a blank state
with only an empty root node. This is used when a storage root is deleted. Read more
Source§fn clear(&mut self)
fn clear(&mut self)
This clears all data structures in the sparse trie, keeping the backing data structures
allocated. A
crate::SparseNode::Empty is inserted at the root. Read moreSource§fn shrink_nodes_to(&mut self, size: usize)
fn shrink_nodes_to(&mut self, size: usize)
Shrink the capacity of the sparse trie’s node storage to the given size.
This will reduce memory usage if the current capacity is higher than the given size.
Source§fn shrink_values_to(&mut self, size: usize)
fn shrink_values_to(&mut self, size: usize)
Shrink the capacity of the sparse trie’s value storage to the given size.
This will reduce memory usage if the current capacity is higher than the given size.
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
Returns a cheap O(1) size hint for the trie representing the count of revealed
(non-Hash) nodes. Read more
Source§fn memory_size(&self) -> usize
fn memory_size(&self) -> usize
Returns a heuristic for the in-memory size of this trie in bytes. Read more
Source§fn prune(&mut self, retained_leaves: &[Nibbles]) -> usize
fn prune(&mut self, retained_leaves: &[Nibbles]) -> usize
Prunes all subtrees that do not contain retained leaves. Read more
Source§fn take_debug_recorder(&mut self) -> TrieDebugRecorder
fn take_debug_recorder(&mut self) -> TrieDebugRecorder
Takes the debug recorder out of this trie, replacing it with an empty one. Read more
Source§fn update_leaves(
&mut self,
updates: &mut B256Map<LeafUpdate>,
proof_required_fn: impl FnMut(B256, u8),
) -> SparseTrieResult<()>
fn update_leaves( &mut self, updates: &mut B256Map<LeafUpdate>, proof_required_fn: impl FnMut(B256, u8), ) -> SparseTrieResult<()>
Applies leaf updates to the sparse trie. Read more
Source§fn commit_updates(
&mut self,
updated: &HashMap<Nibbles, BranchNodeCompact>,
removed: &HashSet<Nibbles>,
)
fn commit_updates( &mut self, updated: &HashMap<Nibbles, BranchNodeCompact>, removed: &HashSet<Nibbles>, )
Commits the updated nodes to internal trie state.
Source§fn with_root(
self,
root: TrieNodeV2,
masks: Option<BranchNodeMasks>,
retain_updates: bool,
) -> SparseTrieResult<Self>
fn with_root( self, root: TrieNodeV2, masks: Option<BranchNodeMasks>, retain_updates: bool, ) -> SparseTrieResult<Self>
Configures the trie to have the given root node revealed. Read more
Source§fn with_updates(self, retain_updates: bool) -> Self
fn with_updates(self, retain_updates: bool) -> Self
Configures the trie to retain information about updates. Read more
Source§fn reveal_node(
&mut self,
path: Nibbles,
node: TrieNodeV2,
masks: Option<BranchNodeMasks>,
) -> SparseTrieResult<()>
fn reveal_node( &mut self, path: Nibbles, node: TrieNodeV2, masks: Option<BranchNodeMasks>, ) -> SparseTrieResult<()>
The single-node version of
reveal_nodes. Read moreAuto Trait Implementations§
impl Freeze for ConfigurableSparseTrie
impl !RefUnwindSafe for ConfigurableSparseTrie
impl Send for ConfigurableSparseTrie
impl Sync for ConfigurableSparseTrie
impl Unpin for ConfigurableSparseTrie
impl UnsafeUnpin for ConfigurableSparseTrie
impl !UnwindSafe for ConfigurableSparseTrie
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> 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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Formats each item in a sequence. Read more
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
Builds a [
TxEnv] from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
Builds a [
TxEnv] from a transaction, its sender, and encoded transaction bytes.§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>
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 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,
Pipes by value. This is generally the method you want to use. Read more
§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,
Borrows
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,
Mutably borrows
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
Borrows
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
Mutably borrows
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
Borrows
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 352 bytes
Size for each variant:
Arena: 352 bytesHashMap: 296 bytes