Skip to main content

StateRef

Trait StateRef 

Source
pub trait StateRef {
    type Error: Error + Send + Sync + 'static;

    // Required methods
    fn basic(
        &self,
        address: Address,
    ) -> Result<Option<AccountInfo>, Self::Error>;
    fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>;
    fn storage(
        &self,
        address: Address,
        index: StorageKey,
    ) -> Result<StorageValue, Self::Error>;
}
Expand description

Trait for immutable access to state data including accounts, code, and storage. This is typically used for read-only database implementations or when state data is pre-loaded and doesn’t require modification.

Required Associated Types§

Source

type Error: Error + Send + Sync + 'static

Error type for state operations

Required Methods§

Source

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Gets basic account information.

Source

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Gets account code by its hash.

Source

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Gets storage value of address at index.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'a, T: 'a + StateRef + ?Sized> StateRef for &'a T

Source§

type Error = <T as StateRef>::Error

Source§

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Source§

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Source§

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Source§

impl<'a, T: 'a + StateRef + ?Sized> StateRef for &'a mut T

Source§

type Error = <T as StateRef>::Error

Source§

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Source§

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Source§

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Source§

impl<T: StateRef + ?Sized> StateRef for Arc<T>

Source§

type Error = <T as StateRef>::Error

Source§

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Source§

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Source§

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Source§

impl<T: StateRef + ?Sized> StateRef for Box<T>

Source§

type Error = <T as StateRef>::Error

Source§

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Source§

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Source§

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Source§

impl<T: StateRef + ?Sized> StateRef for Rc<T>

Source§

type Error = <T as StateRef>::Error

Source§

fn basic(&self, address: Address) -> Result<Option<AccountInfo>, Self::Error>

Source§

fn code_by_hash(&self, code_hash: B256) -> Result<Bytecode, Self::Error>

Source§

fn storage( &self, address: Address, index: StorageKey, ) -> Result<StorageValue, Self::Error>

Implementors§