reth_rpc

Struct EngineApi

Source
pub struct EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where EngineT: EngineTypes,
{ /* 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.

Implementations§

Source§

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

Source

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

Create new instance of EngineApi.

Source

pub async fn new_payload_v1( &self, payload: ExecutionPayloadV1, ) -> Result<PayloadStatus, EngineApiError>

Source

pub async fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> Result<PayloadStatus, EngineApiError>

Source

pub async fn new_payload_v2_metered( &self, payload: ExecutionPayloadInputV2, ) -> Result<PayloadStatus, EngineApiError>

Metered version of new_payload_v2.

Source

pub async fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Result<PayloadStatus, EngineApiError>

Source

pub async fn new_payload_v4( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: Requests, ) -> Result<PayloadStatus, EngineApiError>

Source

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

Source

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

Source

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

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn exchange_transition_configuration( &self, config: TransitionConfiguration, ) -> Result<TransitionConfiguration, EngineApiError>

Called to verify network configuration parameters and ensure that Consensus and Execution layers are using the latest configuration.

Trait Implementations§

Source§

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

Source§

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

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

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

Source§

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

Source§

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,

Source§

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,

Source§

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

Source§

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

Source§

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,

Source§

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,

Source§

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.

Source§

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.

Source§

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.

Source§

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.

Source§

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,

Source§

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.

Source§

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

Source§

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,

Source§

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,

Source§

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

fn into_rpc(self) -> RpcModule<Self>
where <Engine as PayloadTypes>::PayloadAttributes: DeserializeOwned,

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

Auto Trait Implementations§

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> Freeze for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where <EngineT as PayloadTypes>::BuiltPayload: Sized,

§

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

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> Send for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where <EngineT as PayloadTypes>::BuiltPayload: Sized, Provider: Sync + Send, Pool: Sync + Send, Validator: Sync + Send, ChainSpec: Sync + Send,

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> Sync for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where <EngineT as PayloadTypes>::BuiltPayload: Sized, Provider: Sync + Send, Pool: Sync + Send, Validator: Sync + Send, ChainSpec: Sync + Send,

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> Unpin for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
where <EngineT as PayloadTypes>::BuiltPayload: Sized,

§

impl<Provider, EngineT, Pool, Validator, ChainSpec> !UnwindSafe for EngineApi<Provider, EngineT, 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<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