pub struct MockEthProvider {
pub blocks: Arc<Mutex<HashMap<B256, Block>>>,
pub headers: Arc<Mutex<HashMap<B256, Header>>>,
pub accounts: Arc<Mutex<HashMap<Address, ExtendedAccount>>>,
pub chain_spec: Arc<ChainSpec>,
pub state_roots: Arc<Mutex<Vec<B256>>>,
}
Available on crate feature
test-utils
only.Expand description
A mock implementation for Provider interfaces.
Fields§
§blocks: Arc<Mutex<HashMap<B256, Block>>>
Local block store
headers: Arc<Mutex<HashMap<B256, Header>>>
Local header store
accounts: Arc<Mutex<HashMap<Address, ExtendedAccount>>>
Local account store
chain_spec: Arc<ChainSpec>
Local chain spec
state_roots: Arc<Mutex<Vec<B256>>>
Local state roots
Implementations§
Source§impl MockEthProvider
impl MockEthProvider
Sourcepub fn extend_blocks(&self, iter: impl IntoIterator<Item = (B256, Block)>)
pub fn extend_blocks(&self, iter: impl IntoIterator<Item = (B256, Block)>)
Add multiple blocks to local block store
Sourcepub fn add_header(&self, hash: B256, header: Header)
pub fn add_header(&self, hash: B256, header: Header)
Add header to local header store
Sourcepub fn extend_headers(&self, iter: impl IntoIterator<Item = (B256, Header)>)
pub fn extend_headers(&self, iter: impl IntoIterator<Item = (B256, Header)>)
Add multiple headers to local header store
Sourcepub fn add_account(&self, address: Address, account: ExtendedAccount)
pub fn add_account(&self, address: Address, account: ExtendedAccount)
Add account to local account store
Sourcepub fn extend_accounts(
&self,
iter: impl IntoIterator<Item = (Address, ExtendedAccount)>,
)
pub fn extend_accounts( &self, iter: impl IntoIterator<Item = (Address, ExtendedAccount)>, )
Add account to local account store
Sourcepub fn add_state_root(&self, state_root: B256)
pub fn add_state_root(&self, state_root: B256)
Add state root to local state root store
Trait Implementations§
Source§impl AccountReader for MockEthProvider
impl AccountReader for MockEthProvider
Source§fn basic_account(&self, address: Address) -> ProviderResult<Option<Account>>
fn basic_account(&self, address: Address) -> ProviderResult<Option<Account>>
Get basic account information. Read more
Source§impl BlockHashReader for MockEthProvider
impl BlockHashReader for MockEthProvider
Source§fn block_hash(&self, number: u64) -> ProviderResult<Option<B256>>
fn block_hash(&self, number: u64) -> ProviderResult<Option<B256>>
Get the hash of the block with the given number. Returns
None
if no block with this number
exists.Source§fn canonical_hashes_range(
&self,
start: BlockNumber,
end: BlockNumber,
) -> ProviderResult<Vec<B256>>
fn canonical_hashes_range( &self, start: BlockNumber, end: BlockNumber, ) -> ProviderResult<Vec<B256>>
Get headers in range of block hashes or numbers Read more
§fn convert_block_hash(
&self,
hash_or_number: HashOrNumber,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn convert_block_hash( &self, hash_or_number: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>
Get the hash of the block with the given number. Returns
None
if no block with this number
exists.Source§impl BlockIdReader for MockEthProvider
impl BlockIdReader for MockEthProvider
Source§fn pending_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
fn pending_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
Get the current pending block number and hash.
Source§fn safe_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
fn safe_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
Get the current safe block number and hash.
Source§fn finalized_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
fn finalized_block_num_hash(&self) -> ProviderResult<Option<BlockNumHash>>
Get the current finalized block number and hash.
§fn convert_block_number(
&self,
num: BlockNumberOrTag,
) -> Result<Option<u64>, ProviderError>
fn convert_block_number( &self, num: BlockNumberOrTag, ) -> Result<Option<u64>, ProviderError>
Converts the
BlockNumberOrTag
variants to a block number.§fn block_hash_for_id(
&self,
block_id: BlockId,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn block_hash_for_id( &self, block_id: BlockId, ) -> Result<Option<FixedBytes<32>>, ProviderError>
Get the hash of the block by matching the given id.
§fn block_number_for_id(
&self,
block_id: BlockId,
) -> Result<Option<u64>, ProviderError>
fn block_number_for_id( &self, block_id: BlockId, ) -> Result<Option<u64>, ProviderError>
Get the number of the block by matching the given id.
§fn safe_block_number(&self) -> Result<Option<u64>, ProviderError>
fn safe_block_number(&self) -> Result<Option<u64>, ProviderError>
Get the safe block number.
§fn finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
fn finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
Get the finalized block number.
§fn safe_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
fn safe_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
Get the safe block hash.
§fn finalized_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
fn finalized_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
Get the finalized block hash.
Source§impl BlockNumReader for MockEthProvider
impl BlockNumReader for MockEthProvider
Source§fn chain_info(&self) -> ProviderResult<ChainInfo>
fn chain_info(&self) -> ProviderResult<ChainInfo>
Returns the current info for the chain.
Source§fn best_block_number(&self) -> ProviderResult<BlockNumber>
fn best_block_number(&self) -> ProviderResult<BlockNumber>
Returns the best block number in the chain.
Source§fn last_block_number(&self) -> ProviderResult<BlockNumber>
fn last_block_number(&self) -> ProviderResult<BlockNumber>
Returns the last block number associated with the last canonical header in the database.
Source§fn block_number(&self, hash: B256) -> ProviderResult<Option<BlockNumber>>
fn block_number(&self, hash: B256) -> ProviderResult<Option<BlockNumber>>
Gets the
BlockNumber
for the given hash. Returns None
if no block with this hash exists.§fn convert_hash_or_number(
&self,
id: HashOrNumber,
) -> Result<Option<u64>, ProviderError>
fn convert_hash_or_number( &self, id: HashOrNumber, ) -> Result<Option<u64>, ProviderError>
Gets the block number for the given
BlockHashOrNumber
. Returns None
if no block with
this hash exists. If the BlockHashOrNumber
is a Number
, it is returned as is.§fn convert_number(
&self,
id: HashOrNumber,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn convert_number( &self, id: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>
Gets the block hash for the given
BlockHashOrNumber
. Returns None
if no block with this
number exists. If the BlockHashOrNumber
is a Hash
, it is returned as is.Source§impl BlockReader for MockEthProvider
impl BlockReader for MockEthProvider
Source§fn find_block_by_hash(
&self,
hash: B256,
_source: BlockSource,
) -> ProviderResult<Option<Block>>
fn find_block_by_hash( &self, hash: B256, _source: BlockSource, ) -> ProviderResult<Option<Block>>
Tries to find in the given block source. Read more
Source§fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Block>>
fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Block>>
Returns the block with given id from the database. Read more
Source§fn pending_block(&self) -> ProviderResult<Option<SealedBlock>>
fn pending_block(&self) -> ProviderResult<Option<SealedBlock>>
Returns the pending block if available Read more
Source§fn pending_block_with_senders(
&self,
) -> ProviderResult<Option<SealedBlockWithSenders>>
fn pending_block_with_senders( &self, ) -> ProviderResult<Option<SealedBlockWithSenders>>
Returns the pending block if available Read more
Source§fn pending_block_and_receipts(
&self,
) -> ProviderResult<Option<(SealedBlock, Vec<Receipt>)>>
fn pending_block_and_receipts( &self, ) -> ProviderResult<Option<(SealedBlock, Vec<Receipt>)>>
Returns the pending block and receipts if available.
Source§fn ommers(&self, _id: BlockHashOrNumber) -> ProviderResult<Option<Vec<Header>>>
fn ommers(&self, _id: BlockHashOrNumber) -> ProviderResult<Option<Vec<Header>>>
Returns the ommers/uncle headers of the given block from the database. Read more
Source§fn block_body_indices(
&self,
_num: u64,
) -> ProviderResult<Option<StoredBlockBodyIndices>>
fn block_body_indices( &self, _num: u64, ) -> ProviderResult<Option<StoredBlockBodyIndices>>
Returns the block body indices with matching number from database. Read more
Source§fn block_with_senders(
&self,
_id: BlockHashOrNumber,
_transaction_kind: TransactionVariant,
) -> ProviderResult<Option<BlockWithSenders>>
fn block_with_senders( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<BlockWithSenders>>
Returns the block with senders with matching number or hash from database. Read more
Source§fn sealed_block_with_senders(
&self,
_id: BlockHashOrNumber,
_transaction_kind: TransactionVariant,
) -> ProviderResult<Option<SealedBlockWithSenders>>
fn sealed_block_with_senders( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<SealedBlockWithSenders>>
Returns the sealed block with senders with matching number or hash from database. Read more
Source§fn block_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<Block>>
fn block_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<Block>>
Returns all blocks in the given inclusive range. Read more
Source§fn block_with_senders_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<BlockWithSenders>>
fn block_with_senders_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<BlockWithSenders>>
Returns a range of blocks from the database, along with the senders of each
transaction in the blocks.
Source§fn sealed_block_with_senders_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<SealedBlockWithSenders>>
fn sealed_block_with_senders_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<SealedBlockWithSenders>>
Returns a range of sealed blocks from the database, along with the senders of each
transaction in the blocks.
§fn block_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<Block>, ProviderError>
fn block_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<Block>, ProviderError>
Returns the block with matching hash from the database. Read more
§fn block_by_number(&self, num: u64) -> Result<Option<Block>, ProviderError>
fn block_by_number(&self, num: u64) -> Result<Option<Block>, ProviderError>
Returns the block with matching number from database. Read more
Source§impl BlockReaderIdExt for MockEthProvider
impl BlockReaderIdExt for MockEthProvider
Source§fn block_by_id(&self, id: BlockId) -> ProviderResult<Option<Block>>
fn block_by_id(&self, id: BlockId) -> ProviderResult<Option<Block>>
Returns the block with the matching [
BlockId
] from the database. Read moreSource§fn sealed_header_by_id(
&self,
id: BlockId,
) -> ProviderResult<Option<SealedHeader>>
fn sealed_header_by_id( &self, id: BlockId, ) -> ProviderResult<Option<SealedHeader>>
Returns the sealed header with the matching
BlockId
from the database. Read moreSource§fn header_by_id(&self, id: BlockId) -> ProviderResult<Option<Header>>
fn header_by_id(&self, id: BlockId) -> ProviderResult<Option<Header>>
Returns the header with the matching
BlockId
from the database. Read moreSource§fn ommers_by_id(&self, id: BlockId) -> ProviderResult<Option<Vec<Header>>>
fn ommers_by_id(&self, id: BlockId) -> ProviderResult<Option<Vec<Header>>>
Returns the ommers with the matching
BlockId
from the database. Read more§fn block_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<Block>, ProviderError>
fn block_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<Block>, ProviderError>
Returns the block with matching tag from the database Read more
§fn pending_header(&self) -> Result<Option<SealedHeader>, ProviderError>
fn pending_header(&self) -> Result<Option<SealedHeader>, ProviderError>
Returns the pending block header if available Read more
§fn latest_header(&self) -> Result<Option<SealedHeader>, ProviderError>
fn latest_header(&self) -> Result<Option<SealedHeader>, ProviderError>
Returns the latest block header if available Read more
§fn safe_header(&self) -> Result<Option<SealedHeader>, ProviderError>
fn safe_header(&self) -> Result<Option<SealedHeader>, ProviderError>
Returns the safe block header if available Read more
§fn finalized_header(&self) -> Result<Option<SealedHeader>, ProviderError>
fn finalized_header(&self) -> Result<Option<SealedHeader>, ProviderError>
Returns the finalized block header if available Read more
§fn block_with_senders_by_id(
&self,
id: BlockId,
transaction_kind: TransactionVariant,
) -> Result<Option<BlockWithSenders>, ProviderError>
fn block_with_senders_by_id( &self, id: BlockId, transaction_kind: TransactionVariant, ) -> Result<Option<BlockWithSenders>, ProviderError>
Returns the block with senders with matching [
BlockId
]. Read more§fn header_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<Header>, ProviderError>
fn header_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<Header>, ProviderError>
Returns the header with matching tag from the database Read more
§fn sealed_header_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<SealedHeader>, ProviderError>
fn sealed_header_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<SealedHeader>, ProviderError>
Returns the header with matching tag from the database Read more
§fn ommers_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<Vec<Header>>, ProviderError>
fn ommers_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<Vec<Header>>, ProviderError>
Returns the ommers with the matching tag from the database.
Source§impl ChainSpecProvider for MockEthProvider
impl ChainSpecProvider for MockEthProvider
Source§impl ChangeSetReader for MockEthProvider
impl ChangeSetReader for MockEthProvider
Source§fn account_block_changeset(
&self,
_block_number: BlockNumber,
) -> ProviderResult<Vec<AccountBeforeTx>>
fn account_block_changeset( &self, _block_number: BlockNumber, ) -> ProviderResult<Vec<AccountBeforeTx>>
Iterate over account changesets and return the account state from before this block.
Source§impl Clone for MockEthProvider
impl Clone for MockEthProvider
Source§fn clone(&self) -> MockEthProvider
fn clone(&self) -> MockEthProvider
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl DatabaseProviderFactory for MockEthProvider
impl DatabaseProviderFactory for MockEthProvider
Source§type Provider = DatabaseProvider<TxMock, MockNode>
type Provider = DatabaseProvider<TxMock, MockNode>
Provider type returned by the factory.
Source§type ProviderRW = DatabaseProvider<TxMock, MockNode>
type ProviderRW = DatabaseProvider<TxMock, MockNode>
Read-write provider type returned by the factory.
Source§fn database_provider_ro(&self) -> ProviderResult<Self::Provider>
fn database_provider_ro(&self) -> ProviderResult<Self::Provider>
Create new read-only database provider.
Source§fn database_provider_rw(&self) -> ProviderResult<Self::ProviderRW>
fn database_provider_rw(&self) -> ProviderResult<Self::ProviderRW>
Create new read-write database provider.
Source§impl Debug for MockEthProvider
impl Debug for MockEthProvider
Source§impl Default for MockEthProvider
impl Default for MockEthProvider
Source§impl EvmEnvProvider for MockEthProvider
impl EvmEnvProvider for MockEthProvider
Source§fn fill_env_at<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_block_env: &mut BlockEnv,
_at: BlockHashOrNumber,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
fn fill_env_at<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_block_env: &mut BlockEnv,
_at: BlockHashOrNumber,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
Fills the [
CfgEnvWithHandlerCfg
] and [BlockEnv] fields with values specific to the given
[BlockHashOrNumber].Source§fn fill_env_with_header<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_block_env: &mut BlockEnv,
_header: &Header,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
fn fill_env_with_header<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_block_env: &mut BlockEnv,
_header: &Header,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
Fills the [
CfgEnvWithHandlerCfg
] and [BlockEnv] fields with values specific to the given
[Header].Source§fn fill_cfg_env_at<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_at: BlockHashOrNumber,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
fn fill_cfg_env_at<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_at: BlockHashOrNumber,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
Fills the [
CfgEnvWithHandlerCfg
] fields with values specific to the given
[BlockHashOrNumber].Source§fn fill_cfg_env_with_header<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_header: &Header,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
fn fill_cfg_env_with_header<EvmConfig>(
&self,
_cfg: &mut CfgEnvWithHandlerCfg,
_header: &Header,
_evm_config: EvmConfig,
) -> ProviderResult<()>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
Fills the [
CfgEnvWithHandlerCfg
] fields with values specific to the given [Header].§fn env_with_header<EvmConfig>(
&self,
header: &Header,
evm_config: EvmConfig,
) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
fn env_with_header<EvmConfig>(
&self,
header: &Header,
evm_config: EvmConfig,
) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>where
EvmConfig: ConfigureEvmEnv<Header = Header>,
Fills the default [
CfgEnvWithHandlerCfg
] and [BlockEnv] fields with values specific to the
given [Header].Source§impl HeaderProvider for MockEthProvider
impl HeaderProvider for MockEthProvider
Source§fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>
fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>
Get header by block hash
Source§fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>
fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>
Get header by block number
Source§fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>
fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>
Get total difficulty by block hash.
Source§fn header_td_by_number(
&self,
number: BlockNumber,
) -> ProviderResult<Option<U256>>
fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>
Get total difficulty by block number.
Source§fn headers_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Header>>
fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Header>>
Get headers in range of block numbers
Source§fn sealed_header(
&self,
number: BlockNumber,
) -> ProviderResult<Option<SealedHeader>>
fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader>>
Get a single sealed header by block number.
Source§fn sealed_headers_while(
&self,
range: impl RangeBounds<BlockNumber>,
predicate: impl FnMut(&SealedHeader) -> bool,
) -> ProviderResult<Vec<SealedHeader>>
fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader) -> bool, ) -> ProviderResult<Vec<SealedHeader>>
Get sealed headers while
predicate
returns true
or the range is exhausted.§fn is_known(&self, block_hash: &FixedBytes<32>) -> Result<bool, ProviderError>
fn is_known(&self, block_hash: &FixedBytes<32>) -> Result<bool, ProviderError>
Check if block is known
§fn sealed_header_by_hash(
&self,
block_hash: FixedBytes<32>,
) -> Result<Option<SealedHeader>, ProviderError>
fn sealed_header_by_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Option<SealedHeader>, ProviderError>
Retrieves the header sealed by the given block hash.
§fn header_by_hash_or_number(
&self,
hash_or_num: HashOrNumber,
) -> Result<Option<Header>, ProviderError>
fn header_by_hash_or_number( &self, hash_or_num: HashOrNumber, ) -> Result<Option<Header>, ProviderError>
Get header by block number or hash
§fn sealed_headers_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<SealedHeader>, ProviderError>
fn sealed_headers_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<SealedHeader>, ProviderError>
Get headers in range of block numbers.
Source§impl ReceiptProvider for MockEthProvider
impl ReceiptProvider for MockEthProvider
Source§fn receipt(&self, _id: TxNumber) -> ProviderResult<Option<Receipt>>
fn receipt(&self, _id: TxNumber) -> ProviderResult<Option<Receipt>>
Get receipt by transaction number Read more
Source§fn receipt_by_hash(&self, _hash: TxHash) -> ProviderResult<Option<Receipt>>
fn receipt_by_hash(&self, _hash: TxHash) -> ProviderResult<Option<Receipt>>
Get receipt by transaction hash. Read more
Source§fn receipts_by_block(
&self,
_block: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<Receipt>>>
fn receipts_by_block( &self, _block: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Receipt>>>
Get receipts by block num or hash. Read more
Source§fn receipts_by_tx_range(
&self,
_range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Receipt>>
fn receipts_by_tx_range( &self, _range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Receipt>>
Get receipts by tx range.
Source§impl ReceiptProviderIdExt for MockEthProvider
impl ReceiptProviderIdExt for MockEthProvider
§fn receipts_by_block_id(
&self,
block: BlockId,
) -> Result<Option<Vec<Receipt>>, ProviderError>
fn receipts_by_block_id( &self, block: BlockId, ) -> Result<Option<Vec<Receipt>>, ProviderError>
Get receipt by block id
§fn receipts_by_number_or_tag(
&self,
number_or_tag: BlockNumberOrTag,
) -> Result<Option<Vec<Receipt>>, ProviderError>
fn receipts_by_number_or_tag( &self, number_or_tag: BlockNumberOrTag, ) -> Result<Option<Vec<Receipt>>, ProviderError>
Returns the block with the matching
BlockId
from the database. Read moreSource§impl StageCheckpointReader for MockEthProvider
impl StageCheckpointReader for MockEthProvider
Source§fn get_stage_checkpoint(
&self,
_id: StageId,
) -> ProviderResult<Option<StageCheckpoint>>
fn get_stage_checkpoint( &self, _id: StageId, ) -> ProviderResult<Option<StageCheckpoint>>
Fetch the checkpoint for the given stage.
Source§fn get_stage_checkpoint_progress(
&self,
_id: StageId,
) -> ProviderResult<Option<Vec<u8>>>
fn get_stage_checkpoint_progress( &self, _id: StageId, ) -> ProviderResult<Option<Vec<u8>>>
Get stage checkpoint progress.
Source§fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>
fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>
Reads all stage checkpoints and returns a list with the name of the stage and the checkpoint
data.
Source§impl StateProofProvider for MockEthProvider
impl StateProofProvider for MockEthProvider
Source§fn proof(
&self,
_input: TrieInput,
address: Address,
_slots: &[B256],
) -> ProviderResult<AccountProof>
fn proof( &self, _input: TrieInput, address: Address, _slots: &[B256], ) -> ProviderResult<AccountProof>
Get account and storage proofs of target keys in the
HashedPostState
on top of the current state.Source§fn multiproof(
&self,
_input: TrieInput,
_targets: HashMap<B256, HashSet<B256>>,
) -> ProviderResult<MultiProof>
fn multiproof( &self, _input: TrieInput, _targets: HashMap<B256, HashSet<B256>>, ) -> ProviderResult<MultiProof>
Generate [
MultiProof
] for target hashed account and corresponding
hashed storage slot keys.Source§fn witness(
&self,
_input: TrieInput,
_target: HashedPostState,
) -> ProviderResult<HashMap<B256, Bytes>>
fn witness( &self, _input: TrieInput, _target: HashedPostState, ) -> ProviderResult<HashMap<B256, Bytes>>
Get trie witness for provided state.
Source§impl StateProvider for MockEthProvider
impl StateProvider for MockEthProvider
Source§fn storage(
&self,
account: Address,
storage_key: StorageKey,
) -> ProviderResult<Option<StorageValue>>
fn storage( &self, account: Address, storage_key: StorageKey, ) -> ProviderResult<Option<StorageValue>>
Get storage of given account.
Source§fn bytecode_by_hash(&self, code_hash: B256) -> ProviderResult<Option<Bytecode>>
fn bytecode_by_hash(&self, code_hash: B256) -> ProviderResult<Option<Bytecode>>
Get account code by its hash
§fn account_code(&self, addr: Address) -> Result<Option<Bytecode>, ProviderError>
fn account_code(&self, addr: Address) -> Result<Option<Bytecode>, ProviderError>
Get account code by its address. Read more
§fn account_balance(
&self,
addr: Address,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_balance( &self, addr: Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>
Get account balance by its address. Read more
§fn account_nonce(&self, addr: Address) -> Result<Option<u64>, ProviderError>
fn account_nonce(&self, addr: Address) -> Result<Option<u64>, ProviderError>
Get account nonce by its address. Read more
Source§impl StateProviderFactory for MockEthProvider
impl StateProviderFactory for MockEthProvider
Source§fn latest(&self) -> ProviderResult<StateProviderBox>
fn latest(&self) -> ProviderResult<StateProviderBox>
Storage provider for latest block.
Source§fn state_by_block_number_or_tag(
&self,
number_or_tag: BlockNumberOrTag,
) -> ProviderResult<StateProviderBox>
fn state_by_block_number_or_tag( &self, number_or_tag: BlockNumberOrTag, ) -> ProviderResult<StateProviderBox>
Returns a StateProvider indexed by the given block number or tag. Read more
Source§fn history_by_block_number(
&self,
_block: BlockNumber,
) -> ProviderResult<StateProviderBox>
fn history_by_block_number( &self, _block: BlockNumber, ) -> ProviderResult<StateProviderBox>
Returns a historical StateProvider indexed by the given historic block number. Read more
Source§fn history_by_block_hash(
&self,
_block: BlockHash,
) -> ProviderResult<StateProviderBox>
fn history_by_block_hash( &self, _block: BlockHash, ) -> ProviderResult<StateProviderBox>
Returns a historical StateProvider indexed by the given block hash. Read more
Source§fn state_by_block_hash(
&self,
_block: BlockHash,
) -> ProviderResult<StateProviderBox>
fn state_by_block_hash( &self, _block: BlockHash, ) -> ProviderResult<StateProviderBox>
Returns any StateProvider with matching block hash. Read more
Source§fn pending(&self) -> ProviderResult<StateProviderBox>
fn pending(&self) -> ProviderResult<StateProviderBox>
Storage provider for pending state. Read more
Source§fn pending_state_by_hash(
&self,
_block_hash: B256,
) -> ProviderResult<Option<StateProviderBox>>
fn pending_state_by_hash( &self, _block_hash: B256, ) -> ProviderResult<Option<StateProviderBox>>
Storage provider for pending state for the given block hash. Read more
§fn state_by_block_id(
&self,
block_id: BlockId,
) -> Result<Box<dyn StateProvider>, ProviderError>
fn state_by_block_id( &self, block_id: BlockId, ) -> Result<Box<dyn StateProvider>, ProviderError>
Source§impl StateReader for MockEthProvider
impl StateReader for MockEthProvider
Source§fn get_state(
&self,
_block: BlockNumber,
) -> ProviderResult<Option<ExecutionOutcome>>
fn get_state( &self, _block: BlockNumber, ) -> ProviderResult<Option<ExecutionOutcome>>
Get the
ExecutionOutcome
for the given blockSource§impl StateRootProvider for MockEthProvider
impl StateRootProvider for MockEthProvider
Source§fn state_root(&self, _state: HashedPostState) -> ProviderResult<B256>
fn state_root(&self, _state: HashedPostState) -> ProviderResult<B256>
Returns the state root of the
BundleState
on top of the current state. Read moreSource§fn state_root_from_nodes(&self, _input: TrieInput) -> ProviderResult<B256>
fn state_root_from_nodes(&self, _input: TrieInput) -> ProviderResult<B256>
Returns the state root of the
HashedPostState
on top of the current state but re-uses the
intermediate nodes to speed up the computation. It’s up to the caller to construct the
prefix sets and inform the provider of the trie paths that have changes.Source§fn state_root_with_updates(
&self,
_state: HashedPostState,
) -> ProviderResult<(B256, TrieUpdates)>
fn state_root_with_updates( &self, _state: HashedPostState, ) -> ProviderResult<(B256, TrieUpdates)>
Returns the state root of the
HashedPostState
on top of the current state with trie
updates to be committed to the database.Source§fn state_root_from_nodes_with_updates(
&self,
_input: TrieInput,
) -> ProviderResult<(B256, TrieUpdates)>
fn state_root_from_nodes_with_updates( &self, _input: TrieInput, ) -> ProviderResult<(B256, TrieUpdates)>
Returns state root and trie updates.
See
StateRootProvider::state_root_from_nodes
for more info.Source§impl StorageRootProvider for MockEthProvider
impl StorageRootProvider for MockEthProvider
Source§fn storage_root(
&self,
_address: Address,
_hashed_storage: HashedStorage,
) -> ProviderResult<B256>
fn storage_root( &self, _address: Address, _hashed_storage: HashedStorage, ) -> ProviderResult<B256>
Returns the storage root of the
HashedStorage
for target address on top of the current
state.Source§fn storage_proof(
&self,
_address: Address,
slot: B256,
_hashed_storage: HashedStorage,
) -> ProviderResult<StorageProof>
fn storage_proof( &self, _address: Address, slot: B256, _hashed_storage: HashedStorage, ) -> ProviderResult<StorageProof>
Returns the storage proof of the
HashedStorage
for target slot on top of the current
state.Source§impl TransactionsProvider for MockEthProvider
impl TransactionsProvider for MockEthProvider
Source§fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
Get internal transaction identifier by transaction hash. Read more
Source§fn transaction_by_id(
&self,
id: TxNumber,
) -> ProviderResult<Option<TransactionSigned>>
fn transaction_by_id( &self, id: TxNumber, ) -> ProviderResult<Option<TransactionSigned>>
Get transaction by id, computes hash every time so more expensive.
Source§fn transaction_by_id_no_hash(
&self,
id: TxNumber,
) -> ProviderResult<Option<TransactionSignedNoHash>>
fn transaction_by_id_no_hash( &self, id: TxNumber, ) -> ProviderResult<Option<TransactionSignedNoHash>>
Get transaction by id without computing the hash.
Source§fn transaction_by_hash(
&self,
hash: TxHash,
) -> ProviderResult<Option<TransactionSigned>>
fn transaction_by_hash( &self, hash: TxHash, ) -> ProviderResult<Option<TransactionSigned>>
Get transaction by transaction hash.
Source§fn transaction_by_hash_with_meta(
&self,
hash: TxHash,
) -> ProviderResult<Option<(TransactionSigned, TransactionMeta)>>
fn transaction_by_hash_with_meta( &self, hash: TxHash, ) -> ProviderResult<Option<(TransactionSigned, TransactionMeta)>>
Get transaction by transaction hash and additional metadata of the block the transaction was
mined in
Source§fn transaction_block(&self, id: TxNumber) -> ProviderResult<Option<BlockNumber>>
fn transaction_block(&self, id: TxNumber) -> ProviderResult<Option<BlockNumber>>
Get transaction block number
Source§fn transactions_by_block(
&self,
id: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<TransactionSigned>>>
fn transactions_by_block( &self, id: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<TransactionSigned>>>
Get transactions by block id.
Source§fn transactions_by_block_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Vec<TransactionSigned>>>
fn transactions_by_block_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Vec<TransactionSigned>>>
Get transactions by block range.
Source§fn transactions_by_tx_range(
&self,
range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<TransactionSignedNoHash>>
fn transactions_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<TransactionSignedNoHash>>
Get transactions by tx range.
Source§fn senders_by_tx_range(
&self,
range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Address>>
fn senders_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Address>>
Get Senders from a tx range.
Source§fn transaction_sender(&self, id: TxNumber) -> ProviderResult<Option<Address>>
fn transaction_sender(&self, id: TxNumber) -> ProviderResult<Option<Address>>
Get transaction sender. Read more
Source§impl WithdrawalsProvider for MockEthProvider
impl WithdrawalsProvider for MockEthProvider
Source§fn withdrawals_by_block(
&self,
_id: BlockHashOrNumber,
_timestamp: u64,
) -> ProviderResult<Option<Withdrawals>>
fn withdrawals_by_block( &self, _id: BlockHashOrNumber, _timestamp: u64, ) -> ProviderResult<Option<Withdrawals>>
Get withdrawals by block id.
Source§fn latest_withdrawal(&self) -> ProviderResult<Option<Withdrawal>>
fn latest_withdrawal(&self) -> ProviderResult<Option<Withdrawal>>
Get latest withdrawal from this block or earlier .
Auto Trait Implementations§
impl Freeze for MockEthProvider
impl !RefUnwindSafe for MockEthProvider
impl Send for MockEthProvider
impl Sync for MockEthProvider
impl Unpin for MockEthProvider
impl !UnwindSafe for MockEthProvider
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> EvmStateProvider for Twhere
T: StateProvider,
impl<T> EvmStateProvider for Twhere
T: StateProvider,
§fn basic_account(
&self,
address: Address,
) -> Result<Option<Account>, ProviderError>
fn basic_account( &self, address: Address, ) -> Result<Option<Account>, ProviderError>
Get basic account information. Read more
§fn block_hash(
&self,
number: u64,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn block_hash( &self, number: u64, ) -> Result<Option<FixedBytes<32>>, ProviderError>
Get the hash of the block with the given number. Returns
None
if no block with this
number exists.§fn bytecode_by_hash(
&self,
code_hash: FixedBytes<32>,
) -> Result<Option<Bytecode>, ProviderError>
fn bytecode_by_hash( &self, code_hash: FixedBytes<32>, ) -> Result<Option<Bytecode>, ProviderError>
Get account code by hash.
§fn storage(
&self,
account: Address,
storage_key: FixedBytes<32>,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
Get storage of the given account.
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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 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>
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§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§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>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> FullRpcProvider for Twhere
T: StateProviderFactory + EvmEnvProvider + ChainSpecProvider + BlockReaderIdExt + HeaderProvider + TransactionsProvider + StageCheckpointReader + Clone + Unpin + 'static,
<T as ChainSpecProvider>::ChainSpec: EthereumHardforks,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSendSync for T
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: 40 bytes