pub struct RpcBlockchainProvider<P, Node, N = AnyNetwork>where
Node: NodeTypes,{ /* private fields */ }
Expand description
An RPC-based blockchain provider that fetches blockchain data via remote RPC calls.
This is the RPC equivalent of
BlockchainProvider
, implementing
the same StateProviderFactory
and related traits but fetching data from a remote node instead
of local storage.
This provider is useful for:
- Testing without requiring a full local database
- Accessing blockchain state from remote nodes
- Building light clients or tools that don’t need full node storage
The provider type is generic over the network type N (defaulting to AnyNetwork
),
but the current implementation is specialized for alloy_network::AnyNetwork
as it needs to access block header fields directly.
Implementations§
Source§impl<P, Node: NodeTypes, N> RpcBlockchainProvider<P, Node, N>
impl<P, Node: NodeTypes, N> RpcBlockchainProvider<P, Node, N>
Sourcepub fn new(provider: P) -> Selfwhere
Node::ChainSpec: Default,
pub fn new(provider: P) -> Selfwhere
Node::ChainSpec: Default,
Creates a new RpcBlockchainProvider
with default configuration
Sourcepub fn new_with_config(provider: P, config: RpcBlockchainProviderConfig) -> Selfwhere
Node::ChainSpec: Default,
pub fn new_with_config(provider: P, config: RpcBlockchainProviderConfig) -> Selfwhere
Node::ChainSpec: Default,
Creates a new RpcBlockchainProvider
with custom configuration
Sourcepub fn with_chain_spec(self, chain_spec: Arc<Node::ChainSpec>) -> Self
pub fn with_chain_spec(self, chain_spec: Arc<Node::ChainSpec>) -> Self
Use a custom chain spec for the provider
Sourcepub const fn canon_state_notification(
&self,
) -> &Sender<CanonStateNotification<PrimitivesTy<Node>>>
pub const fn canon_state_notification( &self, ) -> &Sender<CanonStateNotification<PrimitivesTy<Node>>>
Get a reference to the canon state notification sender
Trait Implementations§
Source§impl<P, Node, N> BlockBodyIndicesProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> BlockBodyIndicesProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn block_body_indices(
&self,
_num: u64,
) -> ProviderResult<Option<StoredBlockBodyIndices>>
fn block_body_indices( &self, _num: u64, ) -> ProviderResult<Option<StoredBlockBodyIndices>>
Source§fn block_body_indices_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<StoredBlockBodyIndices>>
fn block_body_indices_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<StoredBlockBodyIndices>>
Source§impl<P, Node, N> BlockHashReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> BlockHashReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn block_hash(&self, number: BlockNumber) -> Result<Option<B256>, ProviderError>
fn block_hash(&self, number: BlockNumber) -> Result<Option<B256>, ProviderError>
None
if no block with this number
exists.Source§fn canonical_hashes_range(
&self,
_start: BlockNumber,
_end: BlockNumber,
) -> Result<Vec<B256>, ProviderError>
fn canonical_hashes_range( &self, _start: BlockNumber, _end: BlockNumber, ) -> Result<Vec<B256>, ProviderError>
§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>
None
if no block with this number
exists.Source§impl<P, Node, N> BlockIdReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> BlockIdReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn block_number_for_id(
&self,
block_id: BlockId,
) -> Result<Option<BlockNumber>, ProviderError>
fn block_number_for_id( &self, block_id: BlockId, ) -> Result<Option<BlockNumber>, ProviderError>
Source§fn pending_block_num_hash(&self) -> Result<Option<BlockNumHash>, ProviderError>
fn pending_block_num_hash(&self) -> Result<Option<BlockNumHash>, ProviderError>
Source§fn safe_block_num_hash(&self) -> Result<Option<BlockNumHash>, ProviderError>
fn safe_block_num_hash(&self) -> Result<Option<BlockNumHash>, ProviderError>
Source§fn finalized_block_num_hash(
&self,
) -> Result<Option<BlockNumHash>, ProviderError>
fn finalized_block_num_hash( &self, ) -> Result<Option<BlockNumHash>, ProviderError>
§fn convert_block_number(
&self,
num: BlockNumberOrTag,
) -> Result<Option<u64>, ProviderError>
fn convert_block_number( &self, num: BlockNumberOrTag, ) -> Result<Option<u64>, ProviderError>
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>
§fn safe_block_number(&self) -> Result<Option<u64>, ProviderError>
fn safe_block_number(&self) -> Result<Option<u64>, ProviderError>
§fn finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
fn finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
§fn safe_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
fn safe_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
§fn finalized_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
fn finalized_block_hash(&self) -> Result<Option<FixedBytes<32>>, ProviderError>
Source§impl<P, Node, N> BlockNumReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> BlockNumReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn chain_info(&self) -> Result<ChainInfo, ProviderError>
fn chain_info(&self) -> Result<ChainInfo, ProviderError>
Source§fn best_block_number(&self) -> Result<BlockNumber, ProviderError>
fn best_block_number(&self) -> Result<BlockNumber, ProviderError>
Source§fn last_block_number(&self) -> Result<BlockNumber, ProviderError>
fn last_block_number(&self) -> Result<BlockNumber, ProviderError>
Source§fn block_number(&self, hash: B256) -> Result<Option<BlockNumber>, ProviderError>
fn block_number(&self, hash: B256) -> Result<Option<BlockNumber>, ProviderError>
BlockNumber
for the given hash. Returns None
if no block with this hash exists.§fn earliest_block_number(&self) -> Result<u64, ProviderError>
fn earliest_block_number(&self) -> Result<u64, ProviderError>
§fn convert_hash_or_number(
&self,
id: HashOrNumber,
) -> Result<Option<u64>, ProviderError>
fn convert_hash_or_number( &self, id: HashOrNumber, ) -> Result<Option<u64>, ProviderError>
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>
BlockHashOrNumber
. Returns None
if no block with this
number exists. If the BlockHashOrNumber
is a Hash
, it is returned as is.Source§impl<P, Node, N> BlockReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
impl<P, Node, N> BlockReader for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
Source§type Block = <<Node as NodeTypes>::Primitives as NodePrimitives>::Block
type Block = <<Node as NodeTypes>::Primitives as NodePrimitives>::Block
Source§fn find_block_by_hash(
&self,
_hash: B256,
_source: BlockSource,
) -> ProviderResult<Option<Self::Block>>
fn find_block_by_hash( &self, _hash: B256, _source: BlockSource, ) -> ProviderResult<Option<Self::Block>>
Source§fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Self::Block>>
fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Self::Block>>
Source§fn pending_block(&self) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn pending_block(&self) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Source§fn pending_block_and_receipts(
&self,
) -> ProviderResult<Option<(RecoveredBlock<Self::Block>, Vec<Self::Receipt>)>>
fn pending_block_and_receipts( &self, ) -> ProviderResult<Option<(RecoveredBlock<Self::Block>, Vec<Self::Receipt>)>>
Source§fn recovered_block(
&self,
_id: BlockHashOrNumber,
_transaction_kind: TransactionVariant,
) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn recovered_block( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Source§fn sealed_block_with_senders(
&self,
_id: BlockHashOrNumber,
_transaction_kind: TransactionVariant,
) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn sealed_block_with_senders( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Source§fn block_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<Self::Block>>
fn block_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<Self::Block>>
Source§fn block_with_senders_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
fn block_with_senders_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
Source§fn recovered_block_range(
&self,
_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
fn recovered_block_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
§fn block_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<Self::Block>, ProviderError>
fn block_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<Self::Block>, ProviderError>
Source§impl<P, Node, N> BlockReaderIdExt for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
impl<P, Node, N> BlockReaderIdExt for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
Source§fn block_by_id(&self, id: BlockId) -> ProviderResult<Option<Self::Block>>
fn block_by_id(&self, id: BlockId) -> ProviderResult<Option<Self::Block>>
BlockId
] from the database. Read moreSource§fn sealed_header_by_id(
&self,
id: BlockId,
) -> ProviderResult<Option<SealedHeader<Self::Header>>>
fn sealed_header_by_id( &self, id: BlockId, ) -> ProviderResult<Option<SealedHeader<Self::Header>>>
BlockId
from the database. Read moreSource§fn header_by_id(&self, id: BlockId) -> ProviderResult<Option<Self::Header>>
fn header_by_id(&self, id: BlockId) -> ProviderResult<Option<Self::Header>>
BlockId
from the database. Read more§fn block_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<Self::Block>, ProviderError>
fn block_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<Self::Block>, ProviderError>
§fn pending_header(
&self,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn pending_header( &self, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn latest_header(
&self,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn latest_header( &self, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn safe_header(
&self,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn safe_header( &self, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn finalized_header(
&self,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn finalized_header( &self, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn block_with_senders_by_id(
&self,
id: BlockId,
transaction_kind: TransactionVariant,
) -> Result<Option<RecoveredBlock<Self::Block>>, ProviderError>
fn block_with_senders_by_id( &self, id: BlockId, transaction_kind: TransactionVariant, ) -> Result<Option<RecoveredBlock<Self::Block>>, ProviderError>
BlockId
]. Read more§fn header_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<Self::Header>, ProviderError>
fn header_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<Self::Header>, ProviderError>
§fn sealed_header_by_number_or_tag(
&self,
id: BlockNumberOrTag,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn sealed_header_by_number_or_tag( &self, id: BlockNumberOrTag, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
Source§impl<P, Node, N> CanonChainTracker for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> CanonChainTracker for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn on_forkchoice_update_received(&self, _update: &ForkchoiceState)
fn on_forkchoice_update_received(&self, _update: &ForkchoiceState)
Source§fn last_received_update_timestamp(&self) -> Option<Instant>
fn last_received_update_timestamp(&self) -> Option<Instant>
CanonChainTracker::on_forkchoice_update_received
])Source§fn set_canonical_head(&self, _header: SealedHeader<Self::Header>)
fn set_canonical_head(&self, _header: SealedHeader<Self::Header>)
Source§fn set_finalized(&self, _header: SealedHeader<Self::Header>)
fn set_finalized(&self, _header: SealedHeader<Self::Header>)
Source§impl<P, Node, N> CanonStateSubscriptions for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> CanonStateSubscriptions for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn subscribe_to_canonical_state(
&self,
) -> CanonStateNotifications<PrimitivesTy<Node>>
fn subscribe_to_canonical_state( &self, ) -> CanonStateNotifications<PrimitivesTy<Node>>
§fn canonical_state_stream(
&self,
) -> CanonStateNotificationStream<Self::Primitives>
fn canonical_state_stream( &self, ) -> CanonStateNotificationStream<Self::Primitives>
CanonStateNotification
].Source§impl<P, Node, N> ChainSpecProvider for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N> ChainSpecProvider for RpcBlockchainProvider<P, Node, N>
Source§impl<P: Clone, Node, N: Clone> Clone for RpcBlockchainProvider<P, Node, N>
impl<P: Clone, Node, N: Clone> Clone for RpcBlockchainProvider<P, Node, N>
Source§fn clone(&self) -> RpcBlockchainProvider<P, Node, N>
fn clone(&self) -> RpcBlockchainProvider<P, Node, N>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<P, Node, N> DatabaseProviderFactory for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> DatabaseProviderFactory for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§type ProviderRW = RpcBlockchainStateProvider<P, Node, N>
type ProviderRW = RpcBlockchainStateProvider<P, Node, N>
Source§type Provider = RpcBlockchainStateProvider<P, Node, N>
type Provider = RpcBlockchainStateProvider<P, Node, N>
Source§fn database_provider_ro(&self) -> Result<Self::Provider, ProviderError>
fn database_provider_ro(&self) -> Result<Self::Provider, ProviderError>
Source§fn database_provider_rw(&self) -> Result<Self::ProviderRW, ProviderError>
fn database_provider_rw(&self) -> Result<Self::ProviderRW, ProviderError>
Source§impl<P, Node: NodeTypes, N> Debug for RpcBlockchainProvider<P, Node, N>
impl<P, Node: NodeTypes, N> Debug for RpcBlockchainProvider<P, Node, N>
Source§impl<P, Node, N> HeaderProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
impl<P, Node, N> HeaderProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
Source§type Header = <<Node as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
type Header = <<Node as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
Source§fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Self::Header>>
fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Self::Header>>
Source§fn header_by_number(&self, num: u64) -> ProviderResult<Option<Self::Header>>
fn header_by_number(&self, num: u64) -> ProviderResult<Option<Self::Header>>
Source§fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>
fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>
Source§fn header_td_by_number(
&self,
number: BlockNumber,
) -> ProviderResult<Option<U256>>
fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>
Source§fn headers_range(
&self,
_range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Self::Header>>
fn headers_range( &self, _range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Self::Header>>
Source§fn sealed_header(
&self,
number: BlockNumber,
) -> ProviderResult<Option<SealedHeader<Self::Header>>>
fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader<Self::Header>>>
Source§fn sealed_headers_while(
&self,
_range: impl RangeBounds<BlockNumber>,
_predicate: impl FnMut(&SealedHeader<Self::Header>) -> bool,
) -> ProviderResult<Vec<SealedHeader<Self::Header>>>
fn sealed_headers_while( &self, _range: impl RangeBounds<BlockNumber>, _predicate: impl FnMut(&SealedHeader<Self::Header>) -> bool, ) -> ProviderResult<Vec<SealedHeader<Self::Header>>>
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>
§fn sealed_header_by_hash(
&self,
block_hash: FixedBytes<32>,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn sealed_header_by_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn header_by_hash_or_number(
&self,
hash_or_num: HashOrNumber,
) -> Result<Option<Self::Header>, ProviderError>
fn header_by_hash_or_number( &self, hash_or_num: HashOrNumber, ) -> Result<Option<Self::Header>, ProviderError>
§fn sealed_headers_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<SealedHeader<Self::Header>>, ProviderError>
fn sealed_headers_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<SealedHeader<Self::Header>>, ProviderError>
Source§impl<P, Node, N> NodePrimitivesProvider for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N> NodePrimitivesProvider for RpcBlockchainProvider<P, Node, N>
Source§type Primitives = <Node as NodeTypes>::Primitives
type Primitives = <Node as NodeTypes>::Primitives
Source§impl<P, Node, N> ReceiptProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
impl<P, Node, N> ReceiptProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
Source§fn receipt(&self, _id: TxNumber) -> ProviderResult<Option<Self::Receipt>>
fn receipt(&self, _id: TxNumber) -> ProviderResult<Option<Self::Receipt>>
Source§fn receipt_by_hash(&self, hash: TxHash) -> ProviderResult<Option<Self::Receipt>>
fn receipt_by_hash(&self, hash: TxHash) -> ProviderResult<Option<Self::Receipt>>
Source§fn receipts_by_block(
&self,
block: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<Self::Receipt>>>
fn receipts_by_block( &self, block: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Receipt>>>
Source§fn receipts_by_tx_range(
&self,
_range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Self::Receipt>>
fn receipts_by_tx_range( &self, _range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Receipt>>
Source§fn receipts_by_block_range(
&self,
_block_range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<Vec<Self::Receipt>>>
fn receipts_by_block_range( &self, _block_range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<Vec<Self::Receipt>>>
Source§impl<P, Node, N> ReceiptProviderIdExt for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
impl<P, Node, N> ReceiptProviderIdExt for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
ReceiptTy<Node>: TryFromReceiptResponse<N>,
§fn receipts_by_block_id(
&self,
block: BlockId,
) -> Result<Option<Vec<Self::Receipt>>, ProviderError>
fn receipts_by_block_id( &self, block: BlockId, ) -> Result<Option<Vec<Self::Receipt>>, ProviderError>
Source§impl<P, Node, N> StateProviderFactory for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
impl<P, Node, N> StateProviderFactory for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
Source§fn latest(&self) -> Result<StateProviderBox, ProviderError>
fn latest(&self) -> Result<StateProviderBox, ProviderError>
Source§fn state_by_block_id(
&self,
block_id: BlockId,
) -> Result<StateProviderBox, ProviderError>
fn state_by_block_id( &self, block_id: BlockId, ) -> Result<StateProviderBox, ProviderError>
Source§fn state_by_block_number_or_tag(
&self,
number_or_tag: BlockNumberOrTag,
) -> Result<StateProviderBox, ProviderError>
fn state_by_block_number_or_tag( &self, number_or_tag: BlockNumberOrTag, ) -> Result<StateProviderBox, ProviderError>
StateProvider
] indexed by the given block number or tag. Read moreSource§fn history_by_block_number(
&self,
block_number: BlockNumber,
) -> Result<StateProviderBox, ProviderError>
fn history_by_block_number( &self, block_number: BlockNumber, ) -> Result<StateProviderBox, ProviderError>
StateProvider
] indexed by the given historic block number. Read moreSource§fn history_by_block_hash(
&self,
block_hash: BlockHash,
) -> Result<StateProviderBox, ProviderError>
fn history_by_block_hash( &self, block_hash: BlockHash, ) -> Result<StateProviderBox, ProviderError>
StateProvider
] indexed by the given block hash. Read moreSource§fn state_by_block_hash(
&self,
block_hash: BlockHash,
) -> Result<StateProviderBox, ProviderError>
fn state_by_block_hash( &self, block_hash: BlockHash, ) -> Result<StateProviderBox, ProviderError>
Source§impl<P, Node, N> TransactionsProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
impl<P, Node, N> TransactionsProvider for RpcBlockchainProvider<P, Node, N>where
P: Provider<N> + Clone + 'static,
N: Network,
Node: NodeTypes,
BlockTy<Node>: TryFromBlockResponse<N>,
TxTy<Node>: TryFromTransactionResponse<N>,
Source§type Transaction = <<Node as NodeTypes>::Primitives as NodePrimitives>::SignedTx
type Transaction = <<Node as NodeTypes>::Primitives as NodePrimitives>::SignedTx
Source§fn transaction_id(&self, _tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
fn transaction_id(&self, _tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
Source§fn transaction_by_id(
&self,
_id: TxNumber,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_id( &self, _id: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_id_unhashed(
&self,
_id: TxNumber,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_id_unhashed( &self, _id: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_hash(
&self,
hash: TxHash,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_hash( &self, hash: TxHash, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_hash_with_meta(
&self,
_hash: TxHash,
) -> ProviderResult<Option<(Self::Transaction, TransactionMeta)>>
fn transaction_by_hash_with_meta( &self, _hash: TxHash, ) -> ProviderResult<Option<(Self::Transaction, TransactionMeta)>>
Source§fn transaction_block(
&self,
_id: TxNumber,
) -> ProviderResult<Option<BlockNumber>>
fn transaction_block( &self, _id: TxNumber, ) -> ProviderResult<Option<BlockNumber>>
Source§fn transactions_by_block(
&self,
block: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<Self::Transaction>>>
fn transactions_by_block( &self, block: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Transaction>>>
Source§fn transactions_by_block_range(
&self,
_range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Vec<Self::Transaction>>>
fn transactions_by_block_range( &self, _range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Vec<Self::Transaction>>>
Source§fn transactions_by_tx_range(
&self,
_range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Self::Transaction>>
fn transactions_by_tx_range( &self, _range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Transaction>>
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>>
Source§fn transaction_sender(&self, _id: TxNumber) -> ProviderResult<Option<Address>>
fn transaction_sender(&self, _id: TxNumber) -> ProviderResult<Option<Address>>
Auto Trait Implementations§
impl<P, Node, N> Freeze for RpcBlockchainProvider<P, Node, N>where
P: Freeze,
impl<P, Node, N = AnyNetwork> !RefUnwindSafe for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N> Send for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N> Sync for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N> Unpin for RpcBlockchainProvider<P, Node, N>
impl<P, Node, N = AnyNetwork> !UnwindSafe for RpcBlockchainProvider<P, Node, N>
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
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> 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,
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,
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,
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,
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,
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,
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,
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,
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,
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
TxEnv
] from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
TxEnv
] from a transaction, its sender, and encoded transaction bytes.§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>
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 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,
§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,
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,
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
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
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
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
x-request-id
as the header name. Read more§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
x-request-id
as the header name. Read more§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
500 Internal Server
responses. Read more§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
413 Payload Too Large
responses. Read more§fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
§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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.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> MaybeDebug for Twhere
T: Debug,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.