Skip to main content

CfgEnv

Struct CfgEnv 

Source
#[non_exhaustive]
pub struct CfgEnv<SPEC = SpecId> {
Show 22 fields pub spec: SPEC, pub gas_params: GasParams, pub chain_id: u64, pub tx_chain_id_check: bool, pub limit_contract_code_size: Option<usize>, pub limit_contract_initcode_size: Option<usize>, pub disable_nonce_check: bool, pub max_blobs_per_tx: Option<u64>, pub blob_base_fee_update_fraction: Option<u64>, pub tx_gas_limit_cap: Option<u64>, pub memory_limit: u64, pub disable_balance_check: bool, pub disable_block_gas_limit: bool, pub disable_eip3541: bool, pub disable_eip3607: bool, pub disable_eip7623: bool, pub disable_base_fee: bool, pub disable_priority_fee_check: bool, pub disable_fee_charge: bool, pub enable_amsterdam_eip8037: bool, pub amsterdam_eip7708_disabled: bool, pub amsterdam_eip7708_delayed_burn_disabled: bool,
}
Expand description

EVM configuration

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§spec: SPEC

Specification for EVM represent the hardfork

CfgEnv::new_with_spec is going to set both gas params and spec.

As GasParams is spec dependent, it is recommended to use one of following function to set both of them. CfgEnv::set_spec_and_mainnet_gas_params, CfgEnv::with_mainnet_gas_params, CfgEnv::with_mainnet_gas_params

§gas_params: GasParams

Gas params for the EVM. Use CfgEnv::set_gas_params to set the gas params. If gas_params was not set it will be set to the default gas params for the spec.

§chain_id: u64

Chain ID of the EVM. Used in CHAINID opcode and transaction’s chain ID check.

Chain ID is introduced EIP-155.

§tx_chain_id_check: bool

Whether to check the transaction’s chain ID.

If set to false, the transaction’s chain ID check will be skipped.

§limit_contract_code_size: Option<usize>

Contract code size limit override.

If None, the limit will be determined by the SpecId (EIP-170 or EIP-7954) at runtime. If Some, this specific limit will be used regardless of SpecId.

Useful to increase this because of tests.

§limit_contract_initcode_size: Option<usize>

Contract initcode size limit override.

If None, the limit will check if limit_contract_code_size is set. If it is set, it will double it for a limit. If it is not set, the limit will be determined by the SpecId (EIP-170 or EIP-7954) at runtime.

Useful to increase this because of tests.

§disable_nonce_check: bool

Skips the nonce validation against the account’s nonce

§max_blobs_per_tx: Option<u64>

Blob max count. EIP-7840 Add blob schedule to EL config files.

If this config is not set, the check for max blobs will be skipped.

§blob_base_fee_update_fraction: Option<u64>

Blob base fee update fraction. EIP-4844 Blob base fee update fraction.

If this config is not set, the blob base fee update fraction will be set to the default value. See also CfgEnv::blob_base_fee_update_fraction.

Default values for Cancun is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_CANCUN and for Prague is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE.

§tx_gas_limit_cap: Option<u64>

Configures the gas limit cap for the transaction.

If None, default value defined by spec will be used.

Introduced in Osaka in EIP-7825: Transaction Gas Limit Cap with initials cap of 30M.

§memory_limit: u64

A hard memory limit in bytes beyond which OutOfGasError::Memory cannot be resized.

In cases where the gas limit may be extraordinarily high, it is recommended to set this to a sane value to prevent memory allocation panics.

Defaults to 2^32 - 1 bytes per EIP-1985.

§disable_balance_check: bool

Skip balance checks if true

Adds transaction cost to balance to ensure execution doesn’t fail.

By default, it is set to false.

§disable_block_gas_limit: bool

There are use cases where it’s allowed to provide a gas limit that’s higher than a block’s gas limit.

To that end, you can disable the block gas limit validation.

By default, it is set to false.

§disable_eip3541: bool

EIP-3541 rejects the creation of contracts that starts with 0xEF

This is useful for chains that do not implement EIP-3541.

By default, it is set to false.

§disable_eip3607: bool

EIP-3607 rejects transactions from senders with deployed code

In development, it can be desirable to simulate calls from contracts, which this setting allows.

By default, it is set to false.

§disable_eip7623: bool

EIP-7623 increases calldata cost.

This EIP can be considered irrelevant in the context of an EVM-compatible L2 rollup, if it does not make use of blobs.

By default, it is set to false.

§disable_base_fee: bool

Disables base fee checks for EIP-1559 transactions

This is useful for testing method calls with zero gas price.

By default, it is set to false.

§disable_priority_fee_check: bool

Disables “max fee must be less than or equal to max priority fee” check for EIP-1559 transactions. This is useful because some chains (e.g. Arbitrum) do not enforce this check. By default, it is set to false.

§disable_fee_charge: bool

Disables fee charging for transactions. This is useful when executing eth_call for example, on OP-chains where setting the base fee to 0 isn’t sufficient. By default, it is set to false.

§enable_amsterdam_eip8037: bool

Enables EIP-8037 (Amsterdam) state creation gas cost increase.

EIP-8037 introduces dual gas limits: regular gas for execution and state gas for storage creation. State gas is tracked via a reservoir model. It specifies concrete gas values based on cost_per_state_byte and adds a hash cost for deployed bytecode.

By default, it is set to false.

§amsterdam_eip7708_disabled: bool

Disables EIP-7708 (ETH transfers emit logs).

By default, it is set to false.

§amsterdam_eip7708_delayed_burn_disabled: bool

Disables EIP-7708 delayed burn logging.

When enabled, revm tracks all self-destructed addresses and emits logs for accounts that still have remaining balance at the end of the transaction. This can be disabled for performance reasons as it requires storing and iterating over all self-destructed accounts. When disabled, the logging can be done outside of revm when applying accounts to database state.

By default, it is set to false.

Implementations§

Source§

impl CfgEnv

Source

pub fn new() -> CfgEnv

Creates new CfgEnv with default values.

Source§

impl<SPEC> CfgEnv<SPEC>

Source

pub fn spec(&self) -> &SPEC

Returns the spec for the CfgEnv.

Source

pub fn with_chain_id(self, chain_id: u64) -> CfgEnv<SPEC>

Consumes self and returns a new CfgEnv with the specified chain ID.

Source

pub fn with_gas_params(self, gas_params: GasParams) -> CfgEnv<SPEC>

Sets the gas params for the CfgEnv.

Source

pub fn set_spec(&mut self, spec: SPEC)

👎Deprecated:

Use CfgEnv::set_spec_and_mainnet_gas_params instead

Sets the spec for the CfgEnv.

Source

pub fn set_gas_params(&mut self, gas_params: GasParams)

Sets the gas params for the CfgEnv.

Source

pub fn enable_tx_chain_id_check(self) -> CfgEnv<SPEC>

Enables the transaction’s chain ID check.

Source

pub fn disable_tx_chain_id_check(self) -> CfgEnv<SPEC>

Disables the transaction’s chain ID check.

Source

pub fn with_spec(self, spec: SPEC) -> CfgEnv<SPEC>

👎Deprecated:

Use CfgEnv::with_spec_and_mainnet_gas_params instead

Sets the spec for the CfgEnv.

Source

pub fn with_spec_and_mainnet_gas_params<OSPEC>( self, spec: OSPEC, ) -> CfgEnv<OSPEC>
where OSPEC: Into<SpecId> + Clone,

Sets the spec for the CfgEnv and the gas params to the mainnet gas params.

Automatically enables EIP-8037 for AMSTERDAM and later.

Source

pub fn with_spec_and_gas_params<OSPEC>( self, spec: OSPEC, gas_params: GasParams, ) -> CfgEnv<OSPEC>
where OSPEC: Into<SpecId> + Clone,

Consumes self and returns a new CfgEnv with the specified spec.

Resets the gas params override function as it is generic over SPEC.

Source

pub fn with_max_blobs_per_tx(self, max_blobs_per_tx: u64) -> CfgEnv<SPEC>

Sets the blob target

Source

pub fn set_max_blobs_per_tx(&mut self, max_blobs_per_tx: u64)

Sets the blob target

Source

pub fn clear_max_blobs_per_tx(&mut self)

Clears the blob target and max count over hardforks.

Source

pub fn with_disable_priority_fee_check(self, disable: bool) -> CfgEnv<SPEC>

Sets the disable priority fee check flag.

Source

pub fn with_disable_fee_charge(self, disable: bool) -> CfgEnv<SPEC>

Sets the disable fee charge flag.

Source

pub fn with_disable_eip7623(self, disable: bool) -> CfgEnv<SPEC>

Sets the disable eip7623 flag.

Source

pub fn with_enable_amsterdam_eip8037(self, enable: bool) -> CfgEnv<SPEC>

Sets the enable EIP-8037 (Amsterdam) state creation gas cost flag.

Source§

impl<SPEC> CfgEnv<SPEC>
where SPEC: Into<SpecId> + Clone,

Source

pub fn new_with_spec_and_gas_params( spec: SPEC, gas_params: GasParams, ) -> CfgEnv<SPEC>

Create new CfgEnv with default values and specified spec.

Source

pub fn blob_base_fee_update_fraction(&mut self) -> u64

Returns the blob base fee update fraction from CfgEnv::blob_base_fee_update_fraction.

If this field is not set, return the default value for the spec.

Default values for Cancun is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_CANCUN and for Prague is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE.

Source

pub fn new_with_spec(spec: SPEC) -> CfgEnv<SPEC>

Create new CfgEnv with default values and specified spec. It will create a new gas params based on mainnet spec.

Internally it will call CfgEnv::new_with_spec_and_gas_params with the mainnet gas params.

Source

pub fn with_mainnet_gas_params(self) -> CfgEnv<SPEC>

Sets the gas params for the CfgEnv to the mainnet gas params.

If spec gets changed, calling this function would use this spec to set the mainnetF gas params.

Source

pub fn set_spec_and_mainnet_gas_params(&mut self, spec: SPEC)

Sets the spec for the CfgEnv and the gas params to the mainnet gas params.

Automatically enables EIP-8037 for AMSTERDAM and later.

Trait Implementations§

Source§

impl<SPEC> Cfg for CfgEnv<SPEC>
where SPEC: Into<SpecId> + Clone,

Source§

fn is_block_gas_limit_disabled(&self) -> bool

Returns true if the block gas limit is disabled.

Source§

type Spec = SPEC

Specification id type, it requires to be convertible to SpecId so it can be used by default in mainnet.
Source§

fn chain_id(&self) -> u64

Returns the chain ID of the EVM that is compared with the transaction’s chain ID.
Source§

fn spec(&self) -> <CfgEnv<SPEC> as Cfg>::Spec

Specification id
Source§

fn tx_chain_id_check(&self) -> bool

Returns whether the transaction’s chain ID check is enabled.
Source§

fn tx_gas_limit_cap(&self) -> u64

Returns the gas limit cap for the transaction. Read more
Source§

fn max_blobs_per_tx(&self) -> Option<u64>

Returns the maximum number of blobs allowed per transaction. If it is None, check for max count will be skipped.
Source§

fn max_code_size(&self) -> usize

Returns the maximum code size for the given spec id.
Source§

fn max_initcode_size(&self) -> usize

Returns the max initcode size for the given spec id.
Source§

fn is_eip3541_disabled(&self) -> bool

Returns whether the EIP-3541 (disallowing new contracts with 0xEF prefix) is disabled.
Source§

fn is_eip3607_disabled(&self) -> bool

Returns whether the EIP-3607 (account clearing) is disabled.
Source§

fn is_eip7623_disabled(&self) -> bool

Returns whether the EIP-7623 (increased calldata cost) is disabled.
Source§

fn is_balance_check_disabled(&self) -> bool

Returns whether the balance check is disabled.
Source§

fn is_nonce_check_disabled(&self) -> bool

Returns whether the nonce check is disabled.
Source§

fn is_base_fee_check_disabled(&self) -> bool

Returns whether the base fee check is disabled.
Source§

fn is_priority_fee_check_disabled(&self) -> bool

Returns whether the priority fee check is disabled.
Source§

fn is_fee_charge_disabled(&self) -> bool

Returns whether the fee charge is disabled.
Source§

fn is_eip7708_disabled(&self) -> bool

Returns whether EIP-7708 (ETH transfers emit logs) is disabled.
Source§

fn is_eip7708_delayed_burn_disabled(&self) -> bool

Returns whether EIP-7708 delayed burn logging is disabled. Read more
Source§

fn memory_limit(&self) -> u64

Returns the limit in bytes for the memory buffer.
Source§

fn gas_params(&self) -> &GasParams

Returns the gas params for the EVM.
Source§

fn is_amsterdam_eip8037_enabled(&self) -> bool

Returns whether EIP-8037 (Amsterdam) state creation gas cost increase is enabled. Read more
Source§

impl<SPEC> Clone for CfgEnv<SPEC>
where SPEC: Clone,

Source§

fn clone(&self) -> CfgEnv<SPEC>

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<SPEC> Debug for CfgEnv<SPEC>
where SPEC: Debug,

Source§

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

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

impl<SPEC> Default for CfgEnv<SPEC>
where SPEC: Default + Into<SpecId> + Clone,

Source§

fn default() -> CfgEnv<SPEC>

Returns the “default value” for a type. Read more
Source§

impl<'de, SPEC> Deserialize<'de> for CfgEnv<SPEC>
where SPEC: Deserialize<'de>,

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<CfgEnv<SPEC>, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<SPEC> PartialEq for CfgEnv<SPEC>
where SPEC: PartialEq,

Source§

fn eq(&self, other: &CfgEnv<SPEC>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<SPEC> Serialize for CfgEnv<SPEC>
where SPEC: Serialize,

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<SPEC> Eq for CfgEnv<SPEC>
where SPEC: Eq,

Source§

impl<SPEC> StructuralPartialEq for CfgEnv<SPEC>

Auto Trait Implementations§

§

impl<SPEC> Freeze for CfgEnv<SPEC>
where SPEC: Freeze,

§

impl<SPEC> RefUnwindSafe for CfgEnv<SPEC>
where SPEC: RefUnwindSafe,

§

impl<SPEC> Send for CfgEnv<SPEC>
where SPEC: Send,

§

impl<SPEC> Sync for CfgEnv<SPEC>
where SPEC: Sync,

§

impl<SPEC> Unpin for CfgEnv<SPEC>
where SPEC: Unpin,

§

impl<SPEC> UnsafeUnpin for CfgEnv<SPEC>
where SPEC: UnsafeUnpin,

§

impl<SPEC> UnwindSafe for CfgEnv<SPEC>
where SPEC: UnwindSafe,

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

impl<T> Conv for T

Source§

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

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

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

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

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

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

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

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

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

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

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

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

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

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

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

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

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

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

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.

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

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

Source§

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

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

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

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

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

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

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

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

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

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

Immutable access to a value. Read more
Source§

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

Mutable access to a value. Read more
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T> TryConv for T

Source§

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

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

Source§

fn vzip(self) -> V

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

impl<'de, T> BorrowedRpcObject<'de> for T
where T: RpcBorrow<'de> + RpcSend,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<'de, T> RpcBorrow<'de> for T
where T: Deserialize<'de> + Debug + Send + Sync + Unpin,

Source§

impl<T> RpcObject for T
where T: RpcSend + RpcRecv,

Source§

impl<T> RpcRecv for T
where T: DeserializeOwned + Debug + Send + Sync + Unpin + 'static,

Source§

impl<T> RpcSend for T
where T: Serialize + Clone + Debug + Send + Sync + Unpin,