Struct sp_trie::cache::LocalTrieCache

source ·
pub struct LocalTrieCache<H: Hasher> { /* private fields */ }
Expand description

The local trie cache.

This cache should be used per state instance created by the backend. One state instance is referring to the state of one block. It will cache all the accesses that are done to the state which could not be fulfilled by the SharedTrieCache. These locally cached items are merged back to the shared trie cache when this instance is dropped.

When using Self::as_trie_db_cache or Self::as_trie_db_mut_cache, it will lock Mutexes. So, it is important that these methods are not called multiple times, because they otherwise deadlock.

Implementations§

source§

impl<H: Hasher> LocalTrieCache<H>

source

pub fn as_trie_db_cache(&self, storage_root: H::Out) -> TrieCache<'_, H>

Return self as a TrieDB compatible cache.

The given storage_root needs to be the storage root of the trie this cache is used for.

source

pub fn as_trie_db_mut_cache(&self) -> TrieCache<'_, H>

Return self as TrieDBMut compatible cache.

After finishing all operations with TrieDBMut and having obtained the new storage root, TrieCache::merge_into should be called to update this local cache instance. If the function is not called, cached data is just thrown away and not propagated to the shared cache. So, accessing these new items will be slower, but nothing would break because of this.

Trait Implementations§

source§

impl<H: Hasher> Drop for LocalTrieCache<H>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<H> !Freeze for LocalTrieCache<H>

§

impl<H> !RefUnwindSafe for LocalTrieCache<H>

§

impl<H> Send for LocalTrieCache<H>

§

impl<H> Sync for LocalTrieCache<H>

§

impl<H> Unpin for LocalTrieCache<H>
where <H as Hasher>::Out: Unpin,

§

impl<H> !UnwindSafe for LocalTrieCache<H>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
source§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T