Struct TrieUpdates
pub struct TrieUpdates {
pub account_nodes: HashMap<Nibbles, BranchNodeCompact, DefaultHashBuilder>,
pub removed_nodes: HashSet<Nibbles, DefaultHashBuilder>,
pub storage_tries: HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>,
}Expand description
The aggregation of trie updates.
Fields§
§account_nodes: HashMap<Nibbles, BranchNodeCompact, DefaultHashBuilder>Collection of updated intermediate account nodes indexed by full path.
removed_nodes: HashSet<Nibbles, DefaultHashBuilder>Collection of removed intermediate account nodes indexed by full path.
storage_tries: HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>Collection of updated storage tries indexed by the hashed address.
Implementations§
§impl TrieUpdates
impl TrieUpdates
pub fn with_capacity(account_nodes: usize, storage_tries: usize) -> TrieUpdates
pub fn with_capacity(account_nodes: usize, storage_tries: usize) -> TrieUpdates
Creates a new TrieUpdates with pre-allocated capacity.
pub const fn account_nodes_ref(
&self,
) -> &HashMap<Nibbles, BranchNodeCompact, DefaultHashBuilder>
pub const fn account_nodes_ref( &self, ) -> &HashMap<Nibbles, BranchNodeCompact, DefaultHashBuilder>
Returns reference to updated account nodes.
pub const fn removed_nodes_ref(&self) -> &HashSet<Nibbles, DefaultHashBuilder>
pub const fn removed_nodes_ref(&self) -> &HashSet<Nibbles, DefaultHashBuilder>
Returns a reference to removed account nodes.
pub const fn storage_tries_ref(
&self,
) -> &HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>
pub const fn storage_tries_ref( &self, ) -> &HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>
Returns a reference to updated storage tries.
pub fn extend(&mut self, other: TrieUpdates)
pub fn extend(&mut self, other: TrieUpdates)
Extends the trie updates.
pub fn extend_ref(&mut self, other: &TrieUpdates)
pub fn extend_ref(&mut self, other: &TrieUpdates)
Extends the trie updates.
Slightly less efficient than Self::extend, but preferred to extend(other.clone()).
pub 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.
pub fn insert_storage_updates(
&mut self,
hashed_address: FixedBytes<32>,
storage_updates: StorageTrieUpdates,
)
pub fn insert_storage_updates( &mut self, hashed_address: FixedBytes<32>, storage_updates: StorageTrieUpdates, )
Insert storage updates for a given hashed address.
pub fn finalize(
&mut self,
hash_builder: HashBuilder,
removed_keys: HashSet<Nibbles, DefaultHashBuilder>,
destroyed_storage_trie_nodes: HashMap<FixedBytes<32>, Vec<Nibbles>, FbBuildHasher<32>>,
)
pub fn finalize( &mut self, hash_builder: HashBuilder, removed_keys: HashSet<Nibbles, DefaultHashBuilder>, destroyed_storage_trie_nodes: HashMap<FixedBytes<32>, Vec<Nibbles>, FbBuildHasher<32>>, )
Finalize state trie updates.
pub fn into_sorted(self) -> TrieUpdatesSorted
pub fn into_sorted(self) -> TrieUpdatesSorted
Converts trie updates into TrieUpdatesSorted.
pub 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.
pub fn to_sorted_ref(&self) -> TrieUpdatesSortedRef<'_>
pub fn to_sorted_ref(&self) -> TrieUpdatesSortedRef<'_>
Allocates sorted collections borrowing the trie updates as TrieUpdatesSortedRef.
pub fn clear(&mut self)
pub fn clear(&mut self)
Clears the nodes and storage trie maps in this TrieUpdates.
Trait Implementations§
§impl Clone for TrieUpdates
impl Clone for TrieUpdates
§fn clone(&self) -> TrieUpdates
fn clone(&self) -> TrieUpdates
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for TrieUpdates
impl Debug for TrieUpdates
§impl Default for TrieUpdates
impl Default for TrieUpdates
§fn default() -> TrieUpdates
fn default() -> TrieUpdates
§impl<'de> Deserialize<'de> for TrieUpdates
impl<'de> Deserialize<'de> for TrieUpdates
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<TrieUpdates, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<TrieUpdates, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl<'de> DeserializeAs<'de, TrieUpdates> for TrieUpdates<'de>
impl<'de> DeserializeAs<'de, TrieUpdates> for TrieUpdates<'de>
§fn deserialize_as<D>(
deserializer: D,
) -> Result<TrieUpdates, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(
deserializer: D,
) -> Result<TrieUpdates, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
impl Eq for TrieUpdates
§impl<'a> From<&'a TrieUpdates> for TrieUpdates<'a>
impl<'a> From<&'a TrieUpdates> for TrieUpdates<'a>
§fn from(value: &'a TrieUpdates) -> TrieUpdates<'a>
fn from(value: &'a TrieUpdates) -> TrieUpdates<'a>
§impl<'a> From<TrieUpdates<'a>> for TrieUpdates
impl<'a> From<TrieUpdates<'a>> for TrieUpdates
§fn from(value: TrieUpdates<'a>) -> TrieUpdates
fn from(value: TrieUpdates<'a>) -> TrieUpdates
§impl From<TrieUpdatesSorted> for TrieUpdates
impl From<TrieUpdatesSorted> for TrieUpdates
§fn from(sorted: TrieUpdatesSorted) -> TrieUpdates
fn from(sorted: TrieUpdatesSorted) -> TrieUpdates
§impl PartialEq for TrieUpdates
impl PartialEq for TrieUpdates
§impl Serialize for TrieUpdates
impl Serialize for TrieUpdates
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
§impl SerializeAs<TrieUpdates> for TrieUpdates<'_>
impl SerializeAs<TrieUpdates> for TrieUpdates<'_>
§fn serialize_as<S>(
source: &TrieUpdates,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize_as<S>(
source: &TrieUpdates,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::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> 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> 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> ⓘ
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§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>,
Source§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