Struct EngineApi

pub struct EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
where PayloadT: PayloadTypes,
{ /* private fields */ }
Expand description

Re-export for convenience The Engine API implementation that grants the Consensus layer access to data and functions in the Execution layer that are crucial for the consensus process.

This type is generic over EngineTypes and intended to be used as the entrypoint for engine API processing. It can be reused by other non L1 engine APIs that deviate from the L1 spec but are still follow the engine API model.

§Implementers

Implementing support for an engine API jsonrpsee RPC handler is done by defining the engine API server trait and implementing it on a type that can wrap this EngineApi type. See also EngineApiServer implementation for this type which is the L1 implementation.

Implementations§

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
where Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, PayloadT: PayloadTypes, Pool: TransactionPool + 'static, Validator: EngineValidator<PayloadT>, ChainSpec: EthereumHardforks + Send + Sync + 'static,

pub fn new( provider: Provider, chain_spec: Arc<ChainSpec>, beacon_consensus: BeaconConsensusEngineHandle<PayloadT>, payload_store: PayloadStore<PayloadT>, tx_pool: Pool, task_spawner: Box<dyn TaskSpawner>, client: ClientVersionV1, capabilities: EngineCapabilities, validator: Validator, accept_execution_requests_hash: bool, ) -> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>

Create new instance of EngineApi.

pub fn get_client_version_v1( &self, _client: ClientVersionV1, ) -> Result<Vec<ClientVersionV1>, EngineApiError>

Fetches the client version.

pub async fn new_payload_v1( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>

pub async fn new_payload_v2( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>

pub async fn new_payload_v2_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>

Metered version of new_payload_v2.

pub async fn new_payload_v3( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>

pub async fn new_payload_v3_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, ErrorObject<'static>>

Metrics version of new_payload_v3

pub async fn new_payload_v4( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>

pub async fn new_payload_v4_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, ErrorObject<'static>>

Metrics version of new_payload_v4

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, EngineT: EngineTypes, Pool: TransactionPool + 'static, Validator: EngineValidator<EngineT>, ChainSpec: EthereumHardforks + Send + Sync + 'static,

pub async fn fork_choice_updated_v1( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Sends a message to the beacon consensus engine to update the fork choice without withdrawals.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_forkchoiceUpdatedV1

Caution: This should not accept the withdrawals field

pub async fn fork_choice_updated_v1_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Metrics version of fork_choice_updated_v1

pub async fn fork_choice_updated_v2( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Sends a message to the beacon consensus engine to update the fork choice with withdrawals, but only after shanghai.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/shanghai.md#engine_forkchoiceupdatedv2

pub async fn fork_choice_updated_v2_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Metrics version of fork_choice_updated_v2

pub async fn fork_choice_updated_v3( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Sends a message to the beacon consensus engine to update the fork choice with withdrawals, but only after cancun.

See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_forkchoiceupdatedv3

pub async fn fork_choice_updated_v3_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>

Metrics version of fork_choice_updated_v3

pub async fn get_payload_v1( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, EngineApiError>

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_getPayloadV1

Caution: This should not return the withdrawals field

Note:

Provider software MAY stop the corresponding build process after serving this call.

pub async fn get_payload_v1_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, EngineApiError>

Metrics version of get_payload_v1

pub async fn get_payload_v2( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, EngineApiError>

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/shanghai.md#engine_getpayloadv2

Note:

Provider software MAY stop the corresponding build process after serving this call.

pub async fn get_payload_v2_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, EngineApiError>

Metrics version of get_payload_v2

pub async fn get_payload_v3( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, EngineApiError>

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/fe8e13c288c592ec154ce25c534e26cb7ce0530d/src/engine/cancun.md#engine_getpayloadv3

Note:

Provider software MAY stop the corresponding build process after serving this call.

pub async fn get_payload_v3_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, EngineApiError>

Metrics version of get_payload_v3

pub async fn get_payload_v4( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, EngineApiError>

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/7907424db935b93c2fe6a3c0faab943adebe8557/src/engine/prague.md#engine_newpayloadv4

Note:

Provider software MAY stop the corresponding build process after serving this call.

pub async fn get_payload_v4_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, EngineApiError>

Metrics version of get_payload_v4

pub async fn get_payload_bodies_by_range_with<F, R>( &self, start: u64, count: u64, f: F, ) -> Result<Vec<Option<R>>, EngineApiError>
where F: Fn(<Provider as BlockReader>::Block) -> R + Send + 'static, R: Send + 'static,

Fetches all the blocks for the provided range starting at start, containing count blocks and returns the mapped payload bodies.

pub async fn get_payload_bodies_by_range_v1( &self, start: u64, count: u64, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>

Returns the execution payload bodies by the range starting at start, containing count blocks.

WARNING: This method is associated with the BeaconBlocksByRange message in the consensus layer p2p specification, meaning the input should be treated as untrusted or potentially adversarial.

Implementers should take care when acting on the input to this method, specifically ensuring that the range is limited properly, and that the range boundaries are computed correctly and without panics.

pub async fn get_payload_bodies_by_range_v1_metered( &self, start: u64, count: u64, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>

Metrics version of get_payload_bodies_by_range_v1

pub async fn get_payload_bodies_by_hash_with<F, R>( &self, hashes: Vec<FixedBytes<32>>, f: F, ) -> Result<Vec<Option<R>>, EngineApiError>
where F: Fn(<Provider as BlockReader>::Block) -> R + Send + 'static, R: Send + 'static,

Called to retrieve execution payload bodies by hashes.

pub async fn get_payload_bodies_by_hash_v1( &self, hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>

Called to retrieve execution payload bodies by hashes.

pub async fn get_payload_bodies_by_hash_v1_metered( &self, hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>

Metrics version of get_payload_bodies_by_hash_v1

pub fn capabilities(&self) -> &EngineCapabilities

Returns reference to supported capabilities.

Trait Implementations§

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> Debug for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
where PayloadT: PayloadTypes,

§

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

Formats the value using the given formatter. Read more
§

impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT> for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, EngineT: EngineTypes<ExecutionData = ExecutionData>, Pool: TransactionPool + 'static, Validator: EngineValidator<EngineT>, ChainSpec: EthereumHardforks + Send + Sync + 'static,

§

fn new_payload_v1<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV1, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_newPayloadV1 See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_newpayloadv1 Caution: This should not accept the withdrawals field

§

fn new_payload_v2<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadInputV2, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn new_payload_v3<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn new_payload_v4<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, requests: RequestsOrHash, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn fork_choice_updated_v1<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_forkchoiceUpdatedV1 See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_forkchoiceupdatedv1

Caution: This should not accept the withdrawals field

§

fn fork_choice_updated_v2<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn fork_choice_updated_v3<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn get_payload_v1<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_getPayloadV1

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_getPayloadV1

Caution: This should not return the withdrawals field

Note:

Provider software MAY stop the corresponding build process after serving this call.

§

fn get_payload_v2<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_getPayloadV2

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/shanghai.md#engine_getpayloadv2

Note:

Provider software MAY stop the corresponding build process after serving this call.

§

fn get_payload_v3<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_getPayloadV3

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/fe8e13c288c592ec154ce25c534e26cb7ce0530d/src/engine/cancun.md#engine_getpayloadv3

Note:

Provider software MAY stop the corresponding build process after serving this call.

§

fn get_payload_v4<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_getPayloadV4

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

See also https://github.com/ethereum/execution-apis/blob/main/src/engine/prague.md#engine_getpayloadv4

Note:

Provider software MAY stop the corresponding build process after serving this call.

§

fn get_payload_bodies_by_hash_v1<'life0, 'async_trait>( &'life0 self, block_hashes: Vec<FixedBytes<32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn get_payload_bodies_by_range_v1<'life0, 'async_trait>( &'life0 self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Handler for engine_getPayloadBodiesByRangeV1

See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/shanghai.md#engine_getpayloadbodiesbyrangev1

Returns the execution payload bodies by the range starting at start, containing count blocks.

WARNING: This method is associated with the BeaconBlocksByRange message in the consensus layer p2p specification, meaning the input should be treated as untrusted or potentially adversarial.

Implementers should take care when acting on the input to this method, specifically ensuring that the range is limited properly, and that the range boundaries are computed correctly and without panics.

Note: If a block is pre shanghai, withdrawals field will be null.

§

fn get_client_version_v1<'life0, 'async_trait>( &'life0 self, client: ClientVersionV1, ) -> Pin<Box<dyn Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn exchange_capabilities<'life0, 'async_trait>( &'life0 self, _capabilities: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

§

fn get_blobs_v1<'life0, 'async_trait>( &'life0 self, versioned_hashes: Vec<FixedBytes<32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Fetch blobs for the consensus layer from the in-memory blob cache.
§

fn get_blobs_v2<'life0, 'async_trait>( &'life0 self, _versioned_hashes: Vec<FixedBytes<32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV2>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,

Fetch blobs for the consensus layer from the blob store.
Source§

fn into_rpc(self) -> RpcModule<Self>

Collects all the methods and subscriptions defined in the trait and adds them into a single RpcModule.
§

impl<Provider, EngineT, Pool, Validator, ChainSpec> IntoEngineApiRpcModule for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where EngineT: EngineTypes, EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: EngineApiServer<EngineT>,

§

fn into_rpc_module(self) -> RpcModule<()>

Consumes the type and returns all the methods and subscriptions defined in the trait and returns them as a single [RpcModule]

Auto Trait Implementations§

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> Freeze for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> !RefUnwindSafe for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> Send for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
where Provider: Sync + Send, Pool: Sync + Send, Validator: Sync + Send, ChainSpec: Sync + Send,

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> Sync for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
where Provider: Sync + Send, Pool: Sync + Send, Validator: Sync + Send, ChainSpec: Sync + Send,

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> Unpin for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>

§

impl<Provider, PayloadT, Pool, Validator, ChainSpec> !UnwindSafe for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

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

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

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<TxEnv, T> FromRecoveredTx<&T> for TxEnv
where TxEnv: FromRecoveredTx<T>,

§

fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv

Builds a TxEnv from a transaction and a sender address.
§

impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnv
where TxEnv: FromTxWithEncoded<T>,

§

fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv

Builds a TxEnv from a transaction, its sender, and encoded transaction bytes.
§

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> 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
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.
§

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

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSendSync for T

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes