pub struct TrieUpdates {
pub account_nodes: HashMap<Nibbles, BranchNodeCompact>,
pub removed_nodes: HashSet<Nibbles>,
pub storage_tries: B256Map<StorageTrieUpdates>,
}Expand description
The aggregation of trie updates.
Fields§
§account_nodes: HashMap<Nibbles, BranchNodeCompact>Collection of updated intermediate account nodes indexed by full path.
removed_nodes: HashSet<Nibbles>Collection of removed intermediate account nodes indexed by full path.
storage_tries: B256Map<StorageTrieUpdates>Collection of updated storage tries indexed by the hashed address.
Implementations§
Source§impl TrieUpdates
impl TrieUpdates
Sourcepub fn with_capacity(account_nodes: usize, storage_tries: usize) -> Self
pub fn with_capacity(account_nodes: usize, storage_tries: usize) -> Self
Creates a new TrieUpdates with pre-allocated capacity.
Sourcepub const fn account_nodes_ref(&self) -> &HashMap<Nibbles, BranchNodeCompact>
pub const fn account_nodes_ref(&self) -> &HashMap<Nibbles, BranchNodeCompact>
Returns reference to updated account nodes.
Sourcepub const fn removed_nodes_ref(&self) -> &HashSet<Nibbles>
pub const fn removed_nodes_ref(&self) -> &HashSet<Nibbles>
Returns a reference to removed account nodes.
Sourcepub const fn storage_tries_ref(&self) -> &B256Map<StorageTrieUpdates>
pub const fn storage_tries_ref(&self) -> &B256Map<StorageTrieUpdates>
Returns a reference to updated storage tries.
Sourcepub fn extend_ref(&mut self, other: &Self)
pub fn extend_ref(&mut self, other: &Self)
Extends the trie updates.
Slightly less efficient than Self::extend, but preferred to extend(other.clone()).
Sourcepub fn extend_from_sorted(&mut self, sorted: &TrieUpdatesSorted)
pub fn extend_from_sorted(&mut self, sorted: &TrieUpdatesSorted)
Extend trie updates with sorted data, converting directly into the unsorted HashMap
representation. This is more efficient than first converting to TrieUpdates and
then extending, as it avoids creating intermediate HashMap allocations.
This top-level helper merges account nodes and delegates each account’s storage trie to
StorageTrieUpdates::extend_from_sorted.
Sourcepub fn insert_storage_updates(
&mut self,
hashed_address: B256,
storage_updates: StorageTrieUpdates,
)
pub fn insert_storage_updates( &mut self, hashed_address: B256, storage_updates: StorageTrieUpdates, )
Insert storage updates for a given hashed address.
Sourcepub fn finalize(
&mut self,
hash_builder: HashBuilder,
removed_keys: HashSet<Nibbles>,
destroyed_storage_trie_nodes: B256Map<Vec<Nibbles>>,
)
pub fn finalize( &mut self, hash_builder: HashBuilder, removed_keys: HashSet<Nibbles>, destroyed_storage_trie_nodes: B256Map<Vec<Nibbles>>, )
Finalize state trie updates.
Sourcepub fn into_sorted(self) -> TrieUpdatesSorted
pub fn into_sorted(self) -> TrieUpdatesSorted
Converts trie updates into TrieUpdatesSorted.
Sourcepub fn clone_into_sorted(&self) -> TrieUpdatesSorted
pub fn clone_into_sorted(&self) -> TrieUpdatesSorted
Creates a sorted copy without consuming self.
More efficient than .clone().into_sorted() as it avoids cloning HashMap metadata.
Sourcepub fn to_sorted_ref(&self) -> TrieUpdatesSortedRef<'_>
pub fn to_sorted_ref(&self) -> TrieUpdatesSortedRef<'_>
Allocates sorted collections borrowing the trie updates as TrieUpdatesSortedRef.
Trait Implementations§
Source§impl Clone for TrieUpdates
impl Clone for TrieUpdates
Source§impl Debug for TrieUpdates
impl Debug for TrieUpdates
Source§impl Default for TrieUpdates
impl Default for TrieUpdates
Source§impl<'de> Deserialize<'de> for TrieUpdates
Available on crate features serde only.
impl<'de> Deserialize<'de> for TrieUpdates
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, TrieUpdates> for TrieUpdates<'de>
Available on crate feature serde-bincode-compat only.
impl<'de> DeserializeAs<'de, TrieUpdates> for TrieUpdates<'de>
serde-bincode-compat only.Source§fn deserialize_as<D>(deserializer: D) -> Result<TrieUpdates, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<TrieUpdates, D::Error>where
D: Deserializer<'de>,
impl Eq for TrieUpdates
Source§impl<'a> From<&'a TrieUpdates> for TrieUpdates<'a>
Available on crate feature serde-bincode-compat only.
impl<'a> From<&'a TrieUpdates> for TrieUpdates<'a>
serde-bincode-compat only.Source§fn from(value: &'a TrieUpdates) -> Self
fn from(value: &'a TrieUpdates) -> Self
Source§impl<'a> From<TrieUpdates<'a>> for TrieUpdates
Available on crate feature serde-bincode-compat only.
impl<'a> From<TrieUpdates<'a>> for TrieUpdates
serde-bincode-compat only.Source§fn from(value: TrieUpdates<'a>) -> Self
fn from(value: TrieUpdates<'a>) -> Self
Source§impl From<TrieUpdatesSorted> for TrieUpdates
impl From<TrieUpdatesSorted> for TrieUpdates
Source§fn from(sorted: TrieUpdatesSorted) -> Self
fn from(sorted: TrieUpdatesSorted) -> Self
Source§impl PartialEq for TrieUpdates
impl PartialEq for TrieUpdates
Source§impl Serialize for TrieUpdates
Available on crate features serde only.
impl Serialize for TrieUpdates
serde only.Source§impl SerializeAs<TrieUpdates> for TrieUpdates<'_>
Available on crate feature serde-bincode-compat only.
impl SerializeAs<TrieUpdates> for TrieUpdates<'_>
serde-bincode-compat only.Source§fn serialize_as<S>(
source: &TrieUpdates,
serializer: S,
) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(
source: &TrieUpdates,
serializer: S,
) -> Result<S::Ok, S::Error>where
S: Serializer,
impl StructuralPartialEq for TrieUpdates
Auto Trait Implementations§
impl Freeze for TrieUpdates
impl RefUnwindSafe for TrieUpdates
impl Send for TrieUpdates
impl Sync for TrieUpdates
impl Unpin for TrieUpdates
impl UnsafeUnpin for TrieUpdates
impl UnwindSafe for TrieUpdates
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 moreimpl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSerde for Twhere
T: Serialize + for<'de> Deserialize<'de>,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§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> ⓘ
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: 120 bytes