L1Client

Struct L1Client 

Source
pub struct L1Client {
    pub provider: L1Provider,
    pub transport: SwitchingTransport,
    pub(crate) state: Arc<Mutex<L1State>>,
    pub(crate) sender: Sender<L1Event>,
    pub(crate) receiver: InactiveReceiver<L1Event>,
    pub(crate) update_task: Arc<L1UpdateTask>,
}
Expand description

An Ethereum provider and configuration to interact with the L1.

This client runs asynchronously, updating an in-memory snapshot of the relevant L1 information each time a new L1 block is published. The main advantage of this is that we can update the L1 state at the pace of the L1, instead of the much faster pace of HotShot consensus.This makes it easy to use a subscription instead of polling for new blocks, vastly reducing the number of L1 RPC calls we make.

Fields§

§provider: L1Provider

The alloy provider used for L1 communication with wallet and default fillers

§transport: SwitchingTransport

Actual transport used in self.provider i.e. the t variable in ProviderBuilder::new().on_client(RpcClient::new(t, is_local))

§state: Arc<Mutex<L1State>>

Shared state updated by an asynchronous task which polls the L1.

§sender: Sender<L1Event>

Channel used by the async update task to send events to clients.

§receiver: InactiveReceiver<L1Event>

Receiver for events from the async update task.

§update_task: Arc<L1UpdateTask>

Async task which updates the shared state.

Implementations§

Source§

impl L1Client

Source

fn with_transport(transport: SwitchingTransport) -> Self

Source

pub fn new(url: Vec<Url>) -> Result<Self>

Construct a new L1 client with the default options.

Source

pub fn anvil(anvil: &AnvilInstance) -> Result<Self>

test only

Source

pub async fn spawn_tasks(&self)

Start the background tasks which keep the L1 client up to date.

Source

pub async fn shut_down_tasks(&self)

Shut down background tasks associated with this L1 client.

The L1 client will still be usable, but will stop updating until start is called again.

Source

fn update_loop(&self) -> impl Future<Output = ()>

Source

pub async fn snapshot(&self) -> L1Snapshot

Get a snapshot from the l1.

Source

pub async fn wait_for_block(&self, number: u64)

Wait until the highest L1 block number reaches at least number.

This function does not return any information about the block, since the block is not necessarily finalized when it returns. It is only used to guarantee that some block at height number exists, possibly in the unsafe part of the L1 chain.

Source

pub async fn wait_for_finalized_block(&self, number: u64) -> L1BlockInfo

Get information about the given block.

If the desired block number is not finalized yet, this function will block until it becomes finalized.

Source

pub async fn wait_for_finalized_block_with_timestamp( &self, timestamp: U256, ) -> L1BlockInfo

Get information about the first finalized block with timestamp greater than or equal timestamp.

Source

async fn fetch_finalized_block_by_number<'a>( &'a self, state: MutexGuard<'a, L1State>, number: u64, ) -> (MutexGuard<'a, L1State>, L1BlockInfo)

Source

async fn load_and_cache_finalized_block<'a>( &'a self, state: MutexGuard<'a, L1State>, id: BlockId, ) -> (MutexGuard<'a, L1State>, L1BlockInfoWithParent)

Source

pub async fn get_finalized_deposits( &self, fee_contract_address: Address, prev_finalized: Option<u64>, new_finalized: u64, ) -> Vec<FeeInfo>

Get fee info for each Deposit occurring between prev and new. Returns Vec<FeeInfo>

Source

pub async fn is_proxy_contract(&self, proxy_address: Address) -> Result<bool>

Check if the given address is a proxy contract.

Source

pub async fn retry_on_all_providers<Fut>( &self, op: impl Fn() -> Fut, ) -> Result<Fut::Ok, Fut::Error>
where Fut: TryFuture,

Source

pub(crate) fn options(&self) -> &L1ClientOptions

Source

fn metrics(&self) -> &L1ClientMetrics

Source

async fn retry_delay(&self)

Methods from Deref<Target = L1Provider>§

pub async fn fill( &self, tx: <N as Network>::TransactionRequest, ) -> Result<SendableTx<N>, RpcError<TransportErrorKind>>

Fills the transaction request, using the configured fillers

§Example

async fn example() -> Result<(), Box<dyn std::error::Error>> {
    // Create transaction request
    let tx_request = TransactionRequest::default()
        .with_from(address!("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"))
        .with_value(U256::from(1000));

    let provider = ProviderBuilder::new().connect_anvil_with_wallet();

    // Fill transaction with provider data
    let filled_tx = provider.fill(tx_request).await?;

    // Build unsigned transaction
    let typed_tx =
        filled_tx.as_builder().expect("filled tx is a builder").clone().build_unsigned()?;

    // Encode, e.g. for offline signing
    let mut encoded = Vec::new();
    typed_tx.encode_for_signing(&mut encoded);

    // Decode unsigned transaction
    let decoded = TypedTransaction::decode_unsigned(&mut encoded.as_slice())?;

    Ok(())
}

pub fn prepare_call( &self, tx: <N as Network>::TransactionRequest, ) -> Result<<N as Network>::TransactionRequest, RpcError<TransportErrorKind>>

Prepares a transaction request for eth_call operations using the configured fillers

Trait Implementations§

Source§

impl Clone for L1Client

Source§

fn clone(&self) -> L1Client

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for L1Client

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for L1Client

Source§

type Target = FillProvider<JoinFill<Identity, <Ethereum as RecommendedFillers>::RecommendedFillers>, RootProvider>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Provider for L1Client

Source§

fn root(&self) -> &RootProvider

Returns the root provider.
§

fn builder() -> ProviderBuilder<Identity, Identity, N>
where Self: Sized,

Returns the [ProviderBuilder] to build on.
§

fn client(&self) -> &RpcClientInner

Returns the RPC client used to send requests. Read more
§

fn weak_client(&self) -> Weak<RpcClientInner>

Returns a Weak RPC client used to send requests. Read more
§

fn erased(self) -> DynProvider<N>
where Self: Sized + 'static,

Returns a type erased provider wrapped in Arc. See [DynProvider]. Read more
§

fn get_accounts(&self) -> ProviderCall<[(); 0], Vec<Address>>

Gets the accounts in the remote node. This is usually empty unless you’re using a local node.
§

fn get_blob_base_fee(&self) -> ProviderCall<[(); 0], Uint<128, 2>, u128>

Returns the base fee per blob gas (blob gas price) in wei.
§

fn get_block_number(&self) -> ProviderCall<[(); 0], Uint<64, 1>, u64>

Get the last block number available.
§

fn get_block_number_by_id<'life0, 'async_trait>( &'life0 self, block_id: BlockId, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Get the block number for a given block identifier. Read more
§

fn call(&self, tx: <N as Network>::TransactionRequest) -> EthCall<N, Bytes>

Execute a smart contract call with a transaction request and state overrides, without publishing a transaction. Read more
§

fn call_many<'req>( &self, bundles: &'req [Bundle], ) -> EthCallMany<'req, N, Vec<Vec<EthCallResponse>>>

Execute a list of [Bundle] against the provided StateContext and StateOverride, without publishing a transaction. Read more
§

fn multicall(&self) -> MulticallBuilder<Empty, &Self, N>
where Self: Sized,

Execute a multicall by leveraging the [MulticallBuilder]. Read more
§

fn simulate<'req>( &self, payload: &'req SimulatePayload, ) -> RpcWithBlock<&'req SimulatePayload, Vec<SimulatedBlock<<N as Network>::BlockResponse>>>

Executes an arbitrary number of transactions on top of the requested state. Read more
§

fn get_chain_id(&self) -> ProviderCall<[(); 0], Uint<64, 1>, u64>

Gets the chain ID.
§

fn create_access_list<'a>( &self, request: &'a <N as Network>::TransactionRequest, ) -> RpcWithBlock<&'a <N as Network>::TransactionRequest, AccessListResult>

Create an EIP-2930 access list.
§

fn estimate_gas( &self, tx: <N as Network>::TransactionRequest, ) -> EthCall<N, Uint<64, 1>, u64>

Create an [EthCall] future to estimate the gas required for a transaction. Read more
§

fn estimate_eip1559_fees_with<'life0, 'async_trait>( &'life0 self, estimator: Eip1559Estimator, ) -> Pin<Box<dyn Future<Output = Result<Eip1559Estimation, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Estimates the EIP1559 maxFeePerGas and maxPriorityFeePerGas fields. Read more
§

fn estimate_eip1559_fees<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Eip1559Estimation, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Estimates the EIP1559 maxFeePerGas and maxPriorityFeePerGas fields. Read more
§

fn get_fee_history<'life0, 'life1, 'async_trait>( &'life0 self, block_count: u64, last_block: BlockNumberOrTag, reward_percentiles: &'life1 [f64], ) -> Pin<Box<dyn Future<Output = Result<FeeHistory, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Returns a collection of historical gas information [FeeHistory] which can be used to calculate the EIP1559 fields maxFeePerGas and maxPriorityFeePerGas. block_count can range from 1 to 1024 blocks in a single request.
§

fn get_gas_price(&self) -> ProviderCall<[(); 0], Uint<128, 2>, u128>

Gets the current gas price in wei.
§

fn get_account_info( &self, address: Address, ) -> RpcWithBlock<Address, AccountInfo>

Retrieves account information (Account) for the given [Address] at the particular [BlockId]. Read more
§

fn get_account(&self, address: Address) -> RpcWithBlock<Address, TrieAccount>

Retrieves account information (Account) for the given [Address] at the particular [BlockId].
§

fn get_balance(&self, address: Address) -> RpcWithBlock<Address, Uint<256, 4>>

Gets the balance of the account. Read more
§

fn get_block( &self, block: BlockId, ) -> EthGetBlock<<N as Network>::BlockResponse>

Gets a block by either its hash, tag, or number Read more
§

fn get_block_by_hash( &self, hash: FixedBytes<32>, ) -> EthGetBlock<<N as Network>::BlockResponse>

Gets a block by its [BlockHash] Read more
§

fn get_block_by_number( &self, number: BlockNumberOrTag, ) -> EthGetBlock<<N as Network>::BlockResponse>

Gets a block by its [BlockNumberOrTag] Read more
§

fn get_block_transaction_count_by_hash<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns the number of transactions in a block from a block matching the given block hash.
§

fn get_block_transaction_count_by_number<'life0, 'async_trait>( &'life0 self, block_number: BlockNumberOrTag, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns the number of transactions in a block matching the given block number.
§

fn get_block_receipts( &self, block: BlockId, ) -> ProviderCall<(BlockId,), Option<Vec<<N as Network>::ReceiptResponse>>>

Gets the selected block [BlockId] receipts.
§

fn get_code_at(&self, address: Address) -> RpcWithBlock<Address, Bytes>

Gets the bytecode located at the corresponding [Address].
§

fn watch_blocks<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<PollerBuilder<(Uint<256, 4>,), Vec<FixedBytes<32>>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Watch for new blocks by polling the provider with eth_getFilterChanges. Read more
§

fn watch_full_blocks<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<WatchBlocks<<N as Network>::BlockResponse>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Watch for new blocks by polling the provider with eth_getFilterChanges and transforming the returned block hashes into full blocks bodies. Read more
§

fn watch_pending_transactions<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<PollerBuilder<(Uint<256, 4>,), Vec<FixedBytes<32>>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Watch for new pending transaction by polling the provider with eth_getFilterChanges. Read more
§

fn watch_logs<'life0, 'life1, 'async_trait>( &'life0 self, filter: &'life1 Filter, ) -> Pin<Box<dyn Future<Output = Result<PollerBuilder<(Uint<256, 4>,), Vec<Log>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Watch for new logs using the given filter by polling the provider with eth_getFilterChanges. Read more
§

fn watch_full_pending_transactions<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<PollerBuilder<(Uint<256, 4>,), Vec<<N as Network>::TransactionResponse>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Watch for new pending transaction bodies by polling the provider with eth_getFilterChanges. Read more
§

fn get_filter_changes<'life0, 'async_trait, R>( &'life0 self, id: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<Vec<R>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sized + 'async_trait, R: 'async_trait + RpcRecv,

Get a list of values that have been added since the last poll. Read more
§

fn get_filter_changes_dyn<'life0, 'async_trait>( &'life0 self, id: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<FilterChanges, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Get a list of values that have been added since the last poll. Read more
§

fn get_filter_logs<'life0, 'async_trait>( &'life0 self, id: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Log>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Retrieves a Vec<Log> for the given filter ID.
§

fn uninstall_filter<'life0, 'async_trait>( &'life0 self, id: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Request provider to uninstall the filter with the given ID.
§

fn watch_pending_transaction<'life0, 'async_trait>( &'life0 self, config: PendingTransactionConfig, ) -> Pin<Box<dyn Future<Output = Result<PendingTransaction, PendingTransactionError>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Watch for the confirmation of a single pending transaction with the given configuration. Read more
§

fn get_logs<'life0, 'life1, 'async_trait>( &'life0 self, filter: &'life1 Filter, ) -> Pin<Box<dyn Future<Output = Result<Vec<Log>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Retrieves a Vec<Log> with the given [Filter].
§

fn get_proof( &self, address: Address, keys: Vec<FixedBytes<32>>, ) -> RpcWithBlock<(Address, Vec<FixedBytes<32>>), EIP1186AccountProofResponse>

Get the account and storage values of the specified account including the merkle proofs. Read more
§

fn get_storage_at( &self, address: Address, key: Uint<256, 4>, ) -> RpcWithBlock<(Address, Uint<256, 4>), Uint<256, 4>>

Gets the specified storage value from [Address].
§

fn get_transaction_by_sender_nonce( &self, sender: Address, nonce: u64, ) -> ProviderCall<(Address, Uint<64, 1>), Option<<N as Network>::TransactionResponse>>

Gets a transaction by its sender and nonce. Read more
§

fn get_transaction_by_hash( &self, hash: FixedBytes<32>, ) -> ProviderCall<(FixedBytes<32>,), Option<<N as Network>::TransactionResponse>>

Gets a transaction by its [TxHash].
§

fn get_transaction_by_block_hash_and_index( &self, block_hash: FixedBytes<32>, index: usize, ) -> ProviderCall<(FixedBytes<32>, Index), Option<<N as Network>::TransactionResponse>>

Gets a transaction by block hash and transaction index position.
§

fn get_raw_transaction_by_block_hash_and_index( &self, block_hash: FixedBytes<32>, index: usize, ) -> ProviderCall<(FixedBytes<32>, Index), Option<Bytes>>

Gets a raw transaction by block hash and transaction index position.
§

fn get_transaction_by_block_number_and_index( &self, block_number: BlockNumberOrTag, index: usize, ) -> ProviderCall<(BlockNumberOrTag, Index), Option<<N as Network>::TransactionResponse>>

Gets a transaction by block number and transaction index position.
§

fn get_raw_transaction_by_block_number_and_index( &self, block_number: BlockNumberOrTag, index: usize, ) -> ProviderCall<(BlockNumberOrTag, Index), Option<Bytes>>

Gets a raw transaction by block number and transaction index position.
§

fn get_raw_transaction_by_hash( &self, hash: FixedBytes<32>, ) -> ProviderCall<(FixedBytes<32>,), Option<Bytes>>

Returns the EIP-2718 encoded transaction if it exists, see also Decodable2718. Read more
§

fn get_transaction_count( &self, address: Address, ) -> RpcWithBlock<Address, Uint<64, 1>, u64>

Gets the transaction count (AKA “nonce”) of the corresponding address.
§

fn get_transaction_receipt( &self, hash: FixedBytes<32>, ) -> ProviderCall<(FixedBytes<32>,), Option<<N as Network>::ReceiptResponse>>

Gets a transaction receipt if it exists, by its [TxHash].
§

fn get_uncle<'life0, 'async_trait>( &'life0 self, tag: BlockId, idx: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<<N as Network>::BlockResponse>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets an uncle block through the tag [BlockId] and index u64.
§

fn get_uncle_count<'life0, 'async_trait>( &'life0 self, tag: BlockId, ) -> Pin<Box<dyn Future<Output = Result<u64, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets the number of uncles for the block specified by the tag [BlockId].
§

fn get_max_priority_fee_per_gas( &self, ) -> ProviderCall<[(); 0], Uint<128, 2>, u128>

Returns a suggestion for the current maxPriorityFeePerGas in wei.
§

fn new_block_filter<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Uint<256, 4>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Notify the provider that we are interested in new blocks. Read more
§

fn new_filter<'life0, 'life1, 'async_trait>( &'life0 self, filter: &'life1 Filter, ) -> Pin<Box<dyn Future<Output = Result<Uint<256, 4>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Notify the provider that we are interested in logs that match the given filter. Read more
§

fn new_pending_transactions_filter<'life0, 'async_trait>( &'life0 self, full: bool, ) -> Pin<Box<dyn Future<Output = Result<Uint<256, 4>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Notify the provider that we are interested in new pending transactions. Read more
§

fn send_raw_transaction<'life0, 'life1, 'async_trait>( &'life0 self, encoded_tx: &'life1 [u8], ) -> Pin<Box<dyn Future<Output = Result<PendingTransactionBuilder<N>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Broadcasts a raw transaction RLP bytes to the network. Read more
§

fn send_raw_transaction_sync<'life0, 'life1, 'async_trait>( &'life0 self, encoded_tx: &'life1 [u8], ) -> Pin<Box<dyn Future<Output = Result<<N as Network>::ReceiptResponse, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Broadcasts a raw transaction RLP bytes to the network and returns the transaction receipt after it has been mined. Read more
§

fn send_raw_transaction_conditional<'life0, 'life1, 'async_trait>( &'life0 self, encoded_tx: &'life1 [u8], conditional: TransactionConditional, ) -> Pin<Box<dyn Future<Output = Result<PendingTransactionBuilder<N>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Broadcasts a raw transaction RLP bytes with a conditional [TransactionConditional] to the network. Read more
§

fn send_transaction<'life0, 'async_trait>( &'life0 self, tx: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<PendingTransactionBuilder<N>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Broadcasts a transaction to the network. Read more
§

fn send_tx_envelope<'life0, 'async_trait>( &'life0 self, tx: <N as Network>::TxEnvelope, ) -> Pin<Box<dyn Future<Output = Result<PendingTransactionBuilder<N>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Broadcasts a transaction envelope to the network. Read more
§

fn send_transaction_sync<'life0, 'async_trait>( &'life0 self, tx: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<<N as Network>::ReceiptResponse, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Sends a transaction and waits for its receipt in a single call. Read more
§

fn sign_transaction<'life0, 'async_trait>( &'life0 self, tx: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<Bytes, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Signs a transaction that can be submitted to the network later using [Provider::send_raw_transaction]. Read more
§

fn subscribe_blocks( &self, ) -> GetSubscription<(SubscriptionKind,), <N as Network>::HeaderResponse>

Subscribe to a stream of new block headers. Read more
§

fn subscribe_full_blocks(&self) -> SubFullBlocks<N>

Subscribe to a stream of full block bodies. Read more
§

fn subscribe_pending_transactions( &self, ) -> GetSubscription<(SubscriptionKind,), FixedBytes<32>>

Subscribe to a stream of pending transaction hashes. Read more
§

fn subscribe_full_pending_transactions( &self, ) -> GetSubscription<(SubscriptionKind, Params), <N as Network>::TransactionResponse>

Subscribe to a stream of pending transaction bodies. Read more
§

fn subscribe_logs( &self, filter: &Filter, ) -> GetSubscription<(SubscriptionKind, Params), Log>

Subscribe to a stream of logs matching given filter. Read more
§

fn subscribe<P, R>(&self, params: P) -> GetSubscription<P, R>
where P: RpcSend, R: RpcRecv, Self: Sized,

Subscribe to an RPC event.
§

fn subscribe_to<R>(&self, method: &'static str) -> GetSubscription<[(); 0], R>
where R: RpcRecv, Self: Sized,

Subscribe to a non-standard subscription method without parameters. Read more
§

fn unsubscribe<'life0, 'async_trait>( &'life0 self, id: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Cancels a subscription given the subscription ID.
§

fn syncing(&self) -> ProviderCall<[(); 0], SyncStatus>

Gets syncing info.
§

fn get_client_version(&self) -> ProviderCall<[(); 0], String>

Gets the client version.
§

fn get_sha3(&self, data: &[u8]) -> ProviderCall<(String,), FixedBytes<32>>

Gets the Keccak-256 hash of the given data.
§

fn get_net_version(&self) -> ProviderCall<[(); 0], Uint<64, 1>, u64>

Gets the network ID. Same as eth_chainId.
§

fn raw_request<'life0, 'async_trait, P, R>( &'life0 self, method: Cow<'static, str>, params: P, ) -> Pin<Box<dyn Future<Output = Result<R, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: RpcSend + 'async_trait, R: RpcRecv + 'async_trait, Self: Sized + 'async_trait,

Sends a raw JSON-RPC request. Read more
§

fn raw_request_dyn<'life0, 'life1, 'async_trait>( &'life0 self, method: Cow<'static, str>, params: &'life1 RawValue, ) -> Pin<Box<dyn Future<Output = Result<Box<RawValue>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Sends a raw JSON-RPC request with type-erased parameters and return. Read more
§

fn transaction_request(&self) -> <N as Network>::TransactionRequest

Creates a new TransactionRequest.

Auto Trait Implementations§

Blanket Implementations§

§

impl<N, P> AnvilApi<N> for P
where N: Network, P: Provider<N>,

§

fn anvil_impersonate_account<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Send transactions impersonating specific account and contract addresses.
§

fn anvil_stop_impersonating_account<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Stops impersonating an account if previously set with anvil_impersonateAccount.
§

fn anvil_auto_impersonate_account<'life0, 'async_trait>( &'life0 self, enabled: bool, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

If set to true will make every account impersonated.
§

fn anvil_get_auto_mine<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Returns true if auto mining is enabled, and false.
§

fn anvil_set_auto_mine<'life0, 'async_trait>( &'life0 self, enabled: bool, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Enables or disables, based on the single boolean argument, the automatic mining of new blocks with each new transaction submitted to the network.
§

fn anvil_mine<'life0, 'async_trait>( &'life0 self, num_blocks: Option<u64>, interval: Option<u64>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Mines a series of blocks.
§

fn anvil_set_interval_mining<'life0, 'async_trait>( &'life0 self, secs: u64, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the mining behavior to interval with the given interval (seconds).
§

fn anvil_drop_transaction<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<FixedBytes<32>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Removes transactions from the pool.
§

fn anvil_drop_all_transactions<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Removes all transactions from the pool.
§

fn anvil_reset<'life0, 'async_trait>( &'life0 self, forking: Option<Forking>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Reset the fork to a fresh forked state, and optionally update the fork config. Read more
§

fn anvil_set_chain_id<'life0, 'async_trait>( &'life0 self, chain_id: u64, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the chain ID.
§

fn anvil_set_balance<'life0, 'async_trait>( &'life0 self, address: Address, balance: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Modifies the balance of an account.
§

fn anvil_set_code<'life0, 'async_trait>( &'life0 self, address: Address, code: Bytes, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the code of a contract.
§

fn anvil_set_nonce<'life0, 'async_trait>( &'life0 self, address: Address, nonce: u64, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the nonce of an address.
§

fn anvil_set_storage_at<'life0, 'async_trait>( &'life0 self, address: Address, slot: Uint<256, 4>, val: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Writes a single slot of the account’s storage.
§

fn anvil_set_logging<'life0, 'async_trait>( &'life0 self, enable: bool, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Enable or disable logging.
§

fn anvil_set_min_gas_price<'life0, 'async_trait>( &'life0 self, gas: u128, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Set the minimum gas price for the node.
§

fn anvil_set_next_block_base_fee_per_gas<'life0, 'async_trait>( &'life0 self, basefee: u128, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the base fee of the next block.
§

fn anvil_set_coinbase<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the coinbase address.
§

fn anvil_dump_state<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Bytes, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Create a buffer that represents all state on the chain, which can be loaded to separate process by calling anvil_loadState
§

fn anvil_load_state<'life0, 'async_trait>( &'life0 self, buf: Bytes, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Append chain state buffer to current chain. Will overwrite any conflicting addresses or storage.
§

fn anvil_node_info<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<NodeInfo, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Retrieves the Anvil node configuration params.
§

fn anvil_metadata<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Metadata, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Retrieves metadata about the Anvil instance.
§

fn anvil_remove_pool_transactions<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Removes all transactions from the pool for a specific address.
§

fn anvil_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Uint<256, 4>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Snapshot the state of the blockchain at the current block.
§

fn anvil_revert<'life0, 'async_trait>( &'life0 self, id: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Revert the state of the blockchain to a previous snapshot. Takes a single parameter, which is the snapshot id to revert to.
§

fn anvil_increase_time<'life0, 'async_trait>( &'life0 self, seconds: u64, ) -> Pin<Box<dyn Future<Output = Result<i64, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Jump forward in time by the given amount of time, in seconds.
§

fn anvil_set_next_block_timestamp<'life0, 'async_trait>( &'life0 self, seconds: u64, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Similar to evm_increaseTime but takes the exact timestamp that you want in the next block.
§

fn anvil_set_time<'life0, 'async_trait>( &'life0 self, timestamp: u64, ) -> Pin<Box<dyn Future<Output = Result<u64, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the specific timestamp and returns the number of seconds between the given timestamp and the current time.
§

fn anvil_set_block_gas_limit<'life0, 'async_trait>( &'life0 self, gas_limit: u64, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Set the next block gas limit.
§

fn anvil_set_block_timestamp_interval<'life0, 'async_trait>( &'life0 self, seconds: u64, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets an interval for the block timestamp.
§

fn anvil_remove_block_timestamp_interval<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<bool, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Unsets the interval for the block timestamp.
§

fn evm_mine<'life0, 'async_trait>( &'life0 self, opts: Option<MineOptions>, ) -> Pin<Box<dyn Future<Output = Result<String, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Mine blocks, instantly. This will mine the blocks regardless of the configured mining mode.
§

fn anvil_mine_detailed<'life0, 'async_trait>( &'life0 self, opts: Option<MineOptions>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Block>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Mine blocks, instantly and return the mined blocks. This will mine the blocks regardless of the configured mining mode.
§

fn anvil_set_rpc_url<'life0, 'async_trait>( &'life0 self, url: String, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets the backend rpc url.
§

fn anvil_reorg<'life0, 'async_trait>( &'life0 self, options: ReorgOptions, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Reorg the chain
§

fn anvil_rollback<'life0, 'async_trait>( &'life0 self, depth: Option<u64>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Rollback the chain
§

fn anvil_get_blob_by_versioned_hash<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<FixedBytes<alloy_eips::::eip4844::Blob::{constant#0}>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Retrieves a blob by its versioned hash.
§

fn anvil_get_blobs_by_tx_hash<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<FixedBytes<alloy_eips::::eip4844::Blob::{constant#0}>>>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Retrieves blobs by transaction hash.
§

fn eth_send_unsigned_transaction<'life0, 'async_trait>( &'life0 self, request: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<FixedBytes<32>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Execute a transaction regardless of signature status.
§

fn eth_send_transaction_sync<'life0, 'async_trait>( &'life0 self, request: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<<N as Network>::ReceiptResponse, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Executes a transaction and waits for it to be mined, returning the receipt.
§

fn eth_send_raw_transaction_sync<'life0, 'async_trait>( &'life0 self, request: Bytes, ) -> Pin<Box<dyn Future<Output = Result<<N as Network>::ReceiptResponse, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sends a raw transaction and waits for it to be mined, returning the receipt.
§

fn anvil_send_impersonated_transaction<'life0, 'async_trait>( &'life0 self, request: <N as Network>::TransactionRequest, ) -> Pin<Box<dyn Future<Output = Result<FixedBytes<32>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Sets impersonated transaction
§

fn anvil_deal_erc20<'life0, 'async_trait>( &'life0 self, address: Address, token_address: Address, balance: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Modifies the ERC20 balance of an account.
§

fn anvil_set_erc20_allowance<'life0, 'async_trait>( &'life0 self, owner: Address, spender: Address, token: Address, allowance: Uint<256, 4>, ) -> Pin<Box<dyn Future<Output = Result<(), RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Modifies the ERC20 allowance of an account.
§

fn anvil_send_impersonated_transaction_with_config<'life0, 'async_trait>( &'life0 self, request: <N as Network>::TransactionRequest, config: ImpersonateConfig, ) -> Pin<Box<dyn Future<Output = Result<PendingTransactionBuilder<N>, RpcError<TransportErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, P: 'async_trait,

Impersonates the from address in the given transaction request, optionally funds the sender, sends the transaction, and optionally stops impersonating after execution based on the provided config.
Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

§

impl<T> FmtForward for T

§

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,

Causes self to use its Display implementation when Debug-formatted.
§

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,

Causes self to use its LowerHex implementation when Debug-formatted.
§

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,

Causes self to use its Pointer implementation when Debug-formatted.
§

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,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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
§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where 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) -> R
where 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) -> R
where 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
§

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

§

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
§

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

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

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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
where Self: BorrowMut<B>, B: ?Sized,

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
where Self: AsRef<R>, R: ?Sized,

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
where Self: AsMut<R>, R: ?Sized,

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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
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
§

impl<T> JsonSchemaMaybe for T