StorageCache

Struct StorageCache 

Source
pub struct StorageCache;
Expand description

Global accessor to persistent storage that relies on VM-level caching.

Implementations§

Source§

impl StorageCache

Source

pub fn flush()

👎Deprecated since 0.8.0: Use the .vm() method available on Stylus contracts instead to access host environment methods

Flushes the VM cache, persisting all values to the EVM state trie. Note: this is used at the end of the entrypoint macro and is not typically called by user code.

Source

pub fn clear()

👎Deprecated since 0.8.0: Use the .vm() method available on Stylus contracts instead to access host environment methods

Flushes and clears the VM cache, persisting all values to the EVM state trie. This is useful in cases of reentrancy to ensure cached values from one call context show up in another.

Trait Implementations§

Source§

impl GlobalStorage for StorageCache

Source§

fn get_word(vm: VM, key: U256) -> B256

Retrieves a 32-byte EVM word from persistent storage.

Source§

unsafe fn set_word(vm: VM, key: U256, value: B256)

Stores a 32-byte EVM word to persistent storage.

§Safety

May alias storage.

Source§

unsafe fn get<const N: usize>( host: VM, key: U256, offset: usize, ) -> FixedBytes<N>

Retrieves N ≤ 32 bytes from persistent storage, performing SLOAD’s only as needed. The bytes are read from slot key, starting offset bytes from the left. Note that the bytes must exist within a single, 32-byte EVM word. Read more
Source§

unsafe fn get_uint<const B: usize, const L: usize>( host: VM, key: U256, offset: usize, ) -> Uint<B, L>

Retrieves a Uint from persistent storage, performing SLOAD’s only as needed. The integer’s bytes are read from slot key, starting offset bytes from the left. Note that the bytes must exist within a single, 32-byte EVM word. Read more
Source§

unsafe fn get_signed<const B: usize, const L: usize>( host: VM, key: U256, offset: usize, ) -> Signed<B, L>

Retrieves a Signed from persistent storage, performing SLOAD’s only as needed. The integer’s bytes are read from slot key, starting offset bytes from the left. Note that the bytes must exist within a single, 32-byte EVM word. Read more
Source§

unsafe fn get_byte(host: VM, key: U256, offset: usize) -> u8

Retrieves a u8 from persistent storage, performing SLOAD’s only as needed. The byte is read from slot key, starting offset bytes from the left. Read more
Source§

unsafe fn set<const N: usize>( host: VM, key: U256, offset: usize, value: FixedBytes<N>, )

Writes N ≤ 32 bytes to persistent storage, performing SSTORE’s only as needed. The bytes are written to slot key, starting offset bytes from the left. Note that the bytes must be written to a single, 32-byte EVM word. Read more
Source§

unsafe fn set_uint<const B: usize, const L: usize>( host: VM, key: U256, offset: usize, value: Uint<B, L>, )

Writes a Uint to persistent storage, performing SSTORE’s only as needed. The integer’s bytes are written to slot key, starting offset bytes from the left. Note that the bytes must be written to a single, 32-byte EVM word. Read more
Source§

unsafe fn set_signed<const B: usize, const L: usize>( host: VM, key: U256, offset: usize, value: Signed<B, L>, )

Writes a Signed to persistent storage, performing SSTORE’s only as needed. The bytes are written to slot key, starting offset bytes from the left. Note that the bytes must be written to a single, 32-byte EVM word. Read more
Source§

unsafe fn set_byte(host: VM, key: U256, offset: usize, value: u8)

Writes a u8 to persistent storage, performing SSTORE’s only as needed. The byte is written to slot key, starting offset bytes from the left. Read more
Source§

unsafe fn clear_word(host: VM, key: U256)

Clears the 32-byte word at the given key, performing SSTORE’s only as needed. Read more

Auto Trait Implementations§

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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<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> ErasedDestructor for T
where T: 'static,