pub struct GasParams { /* private fields */ }Expand description
Gas table for dynamic gas constants.
Implementations§
Source§impl GasParams
impl GasParams
Sourcepub fn override_gas(&mut self, values: impl IntoIterator<Item = (GasId, u64)>)
pub fn override_gas(&mut self, values: impl IntoIterator<Item = (GasId, u64)>)
Overrides the gas cost for the given gas id.
It will clone underlying table and override the values.
Use to override default gas cost
use revm_context_interface::cfg::gas_params::{GasParams, GasId};
use primitives::hardfork::SpecId;
let mut gas_table = GasParams::new_spec(SpecId::default());
gas_table.override_gas([(GasId::memory_linear_cost(), 2), (GasId::memory_quadratic_reduction(), 512)].into_iter());
assert_eq!(gas_table.get(GasId::memory_linear_cost()), 2);
assert_eq!(gas_table.get(GasId::memory_quadratic_reduction()), 512);Sourcepub fn selfdestruct_refund(&self) -> i64
pub fn selfdestruct_refund(&self) -> i64
Selfdestruct refund.
Sourcepub fn selfdestruct_cold_cost(&self) -> u64
pub fn selfdestruct_cold_cost(&self) -> u64
Selfdestruct cold cost is calculated differently from other cold costs. and it contains both cold and warm costs.
Sourcepub fn selfdestruct_cost(&self, should_charge_topup: bool, is_cold: bool) -> u64
pub fn selfdestruct_cost(&self, should_charge_topup: bool, is_cold: bool) -> u64
Selfdestruct cost.
Sourcepub fn extcodecopy(&self, len: usize) -> u64
pub fn extcodecopy(&self, len: usize) -> u64
EXTCODECOPY gas cost
Sourcepub fn mcopy_cost(&self, len: usize) -> u64
pub fn mcopy_cost(&self, len: usize) -> u64
MCOPY gas cost
Sourcepub fn sstore_static_gas(&self) -> u64
pub fn sstore_static_gas(&self) -> u64
Static gas cost for SSTORE opcode
Sourcepub fn sstore_set_without_load_cost(&self) -> u64
pub fn sstore_set_without_load_cost(&self) -> u64
SSTORE set cost
Sourcepub fn sstore_reset_without_cold_load_cost(&self) -> u64
pub fn sstore_reset_without_cold_load_cost(&self) -> u64
SSTORE reset cost
Sourcepub fn sstore_clearing_slot_refund(&self) -> u64
pub fn sstore_clearing_slot_refund(&self) -> u64
SSTORE clearing slot refund
Sourcepub fn sstore_set_refund(&self) -> u64
pub fn sstore_set_refund(&self) -> u64
SSTORE set refund. Used in sstore_refund for SSTORE_SET_GAS - SLOAD_GAS.
Sourcepub fn sstore_reset_refund(&self) -> u64
pub fn sstore_reset_refund(&self) -> u64
SSTORE reset refund. Used in sstore_refund for SSTORE_RESET_GAS - SLOAD_GAS.
Sourcepub fn sstore_dynamic_gas(
&self,
is_istanbul: bool,
vals: &SStoreResult,
is_cold: bool,
) -> u64
pub fn sstore_dynamic_gas( &self, is_istanbul: bool, vals: &SStoreResult, is_cold: bool, ) -> u64
Dynamic gas cost for SSTORE opcode.
Dynamic gas cost is gas that needs input from SSTORE operation to be calculated.
Sourcepub fn sstore_refund(&self, is_istanbul: bool, vals: &SStoreResult) -> i64
pub fn sstore_refund(&self, is_istanbul: bool, vals: &SStoreResult) -> i64
SSTORE refund calculation.
Sourcepub fn keccak256_cost(&self, len: usize) -> u64
pub fn keccak256_cost(&self, len: usize) -> u64
KECCAK256 gas cost per word
Sourcepub fn memory_cost(&self, len: usize) -> u64
pub fn memory_cost(&self, len: usize) -> u64
Memory gas cost
Sourcepub fn initcode_cost(&self, len: usize) -> u64
pub fn initcode_cost(&self, len: usize) -> u64
Initcode word cost
Sourcepub fn create_cost(&self) -> u64
pub fn create_cost(&self) -> u64
Create gas cost
Sourcepub fn create2_cost(&self, len: usize) -> u64
pub fn create2_cost(&self, len: usize) -> u64
Create2 gas cost.
Sourcepub fn call_stipend(&self) -> u64
pub fn call_stipend(&self) -> u64
Call stipend.
Sourcepub fn call_stipend_reduction(&self, gas_limit: u64) -> u64
pub fn call_stipend_reduction(&self, gas_limit: u64) -> u64
Call stipend reduction. Call stipend is reduced by 1/64 of the gas limit.
Sourcepub fn transfer_value_cost(&self) -> u64
pub fn transfer_value_cost(&self) -> u64
Transfer value cost
Sourcepub fn cold_account_additional_cost(&self) -> u64
pub fn cold_account_additional_cost(&self) -> u64
Additional cold cost. Additional cold cost is added to the gas cost if the account is cold loaded.
Sourcepub fn cold_storage_additional_cost(&self) -> u64
pub fn cold_storage_additional_cost(&self) -> u64
Cold storage additional cost.
Sourcepub fn cold_storage_cost(&self) -> u64
pub fn cold_storage_cost(&self) -> u64
Cold storage cost.
Sourcepub fn new_account_cost(
&self,
is_spurious_dragon: bool,
transfers_value: bool,
) -> u64
pub fn new_account_cost( &self, is_spurious_dragon: bool, transfers_value: bool, ) -> u64
New account cost. New account cost is added to the gas cost if the account is empty.
Sourcepub fn new_account_cost_for_selfdestruct(&self) -> u64
pub fn new_account_cost_for_selfdestruct(&self) -> u64
New account cost for selfdestruct.
Sourcepub fn warm_storage_read_cost(&self) -> u64
pub fn warm_storage_read_cost(&self) -> u64
Warm storage read cost. Warm storage read cost is added to the gas cost if the account is warm loaded.
Sourcepub fn copy_per_word_cost(&self, word_num: usize) -> u64
pub fn copy_per_word_cost(&self, word_num: usize) -> u64
Copy per word cost
Sourcepub fn code_deposit_cost(&self, len: usize) -> u64
pub fn code_deposit_cost(&self, len: usize) -> u64
Code deposit cost, calculated per byte as len * code_deposit_cost.
Sourcepub fn sstore_state_gas(&self, vals: &SStoreResult, cpsb: u64) -> u64
pub fn sstore_state_gas(&self, vals: &SStoreResult, cpsb: u64) -> u64
State gas for SSTORE: charges for new slot creation (zero → non-zero).
Sourcepub fn sstore_state_gas_refill(&self, vals: &SStoreResult, cpsb: u64) -> u64
pub fn sstore_state_gas_refill(&self, vals: &SStoreResult, cpsb: u64) -> u64
State gas to refill the reservoir on 0→x→0 storage restoration (EIP-8037).
When a storage slot is restored to its original zero value within the same transaction, the state gas originally charged for the 0→x transition is returned directly to the reservoir (not via the capped refund counter). Returns 0 in any other case.
cpsb is the current cost_per_state_byte (see super::Cfg::cpsb).
Sourcepub fn new_account_state_gas(&self, cpsb: u64) -> u64
pub fn new_account_state_gas(&self, cpsb: u64) -> u64
State gas for new account creation.
Sourcepub fn code_deposit_state_gas(&self, len: usize, cpsb: u64) -> u64
pub fn code_deposit_state_gas(&self, len: usize, cpsb: u64) -> u64
State gas for code deposit of len bytes.
Sourcepub fn create_state_gas(&self, cpsb: u64) -> u64
pub fn create_state_gas(&self, cpsb: u64) -> u64
State gas for contract metadata creation.
Sourcepub fn tx_eip7702_per_empty_account_cost(&self, cpsb: u64) -> u64
pub fn tx_eip7702_per_empty_account_cost(&self, cpsb: u64) -> u64
Used in GasParams::initial_tx_gas to calculate the eip7702 per-auth cost.
Under EIP-8037 this combines a regular portion with a state-bytes portion
(new-account + bytecode) multiplied by cpsb. Pre-EIP-8037 the state-bytes
portion is zero so this returns the legacy PER_EMPTY_ACCOUNT_COST.
Sourcepub fn tx_eip7702_auth_refund(&self, cpsb: u64) -> u64
pub fn tx_eip7702_auth_refund(&self, cpsb: u64) -> u64
EIP-7702 authorization refund per existing account.
Pre-Amsterdam this is a fixed regular-gas refund (PER_EMPTY_ACCOUNT_COST - PER_AUTH_BASE_COST).
Under EIP-8037 the refund is fully state gas, equal to the per-account
state-gas portion (NEW_ACCOUNT_BYTES * cpsb).
Sourcepub fn tx_eip7702_state_gas(&self, cpsb: u64) -> u64
pub fn tx_eip7702_state_gas(&self, cpsb: u64) -> u64
EIP-8037: State gas per EIP-7702 authorization (pessimistic).
Sums the new-account and bytecode state-bytes portions and multiplies by
cpsb. Used for initial_state_gas tracking. Zero before AMSTERDAM.
Sourcepub fn tx_eip7702_state_refund(
&self,
refunded_accounts: u64,
refunded_bytecodes: u64,
cpsb: u64,
) -> u64
pub fn tx_eip7702_state_refund( &self, refunded_accounts: u64, refunded_bytecodes: u64, cpsb: u64, ) -> u64
EIP-7702 total state-gas refund for a transaction.
Combines the per-account refund (NEW_ACCOUNT_BYTES * cpsb per refunded
account, when the authorization targets an account that already exists)
with the per-bytecode refund (AUTH_BASE_BYTES * cpsb per refunded
bytecode, when the delegation target is already deployed). Returns zero
before AMSTERDAM.
Sourcepub fn tx_eip7702_auth_refund_regular(&self) -> u64
pub fn tx_eip7702_auth_refund_regular(&self) -> u64
EIP-7702 per-auth refund: regular-gas portion only.
Pre-Amsterdam this is PER_EMPTY_ACCOUNT_COST - PER_AUTH_BASE_COST (12500).
Under EIP-8037 it is zero — the refund is entirely state gas.
Sourcepub fn tx_token_non_zero_byte_multiplier(&self) -> u64
pub fn tx_token_non_zero_byte_multiplier(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the token non zero byte multiplier.
Sourcepub fn tx_token_cost(&self) -> u64
pub fn tx_token_cost(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the token cost for input data.
Sourcepub fn tx_floor_cost_per_token(&self) -> u64
pub fn tx_floor_cost_per_token(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the floor gas per token.
Sourcepub fn tx_floor_token_zero_byte_multiplier(&self) -> u64
pub fn tx_floor_token_zero_byte_multiplier(&self) -> u64
Multiplier for a zero byte in the floor tokens calculation.
Under EIP-7623 this is 1 (zero bytes count as one token), so the floor
reuses tokens_in_calldata. Under EIP-7976
it is raised to tx_token_non_zero_byte_multiplier
so every calldata byte contributes the same amount (floor_tokens_in_calldata = (zero + nonzero) * 4).
Sourcepub fn tx_floor_cost(&self, input: &[u8]) -> u64
pub fn tx_floor_cost(&self, input: &[u8]) -> u64
Floor gas cost for a transaction with the given calldata.
Introduced by EIP-7623 and further updated by EIP-7976. Computes
tx_floor_cost_per_token * floor_tokens_in_calldata + tx_floor_cost_base_gas,
where
floor_tokens_in_calldata = zero * tx_floor_token_zero_byte_multiplier + nonzero * tx_token_non_zero_byte_multiplier.
When the two multipliers match (EIP-7976), every byte contributes the
same amount, so the zero/nonzero split is skipped and input.len() is
used directly; otherwise (EIP-7623 path, zero multiplier = 1) the result
matches get_tokens_in_calldata(input, nonzero).
Sourcepub fn tx_floor_cost_with_tokens(&self, tokens: u64) -> u64
pub fn tx_floor_cost_with_tokens(&self, tokens: u64) -> u64
Calculate the floor gas cost for a transaction with the given number of tokens.
Sourcepub fn tx_floor_cost_base_gas(&self) -> u64
pub fn tx_floor_cost_base_gas(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the floor gas base gas.
Sourcepub fn tx_access_list_address_cost(&self) -> u64
pub fn tx_access_list_address_cost(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the access list address cost.
Sourcepub fn tx_access_list_storage_key_cost(&self) -> u64
pub fn tx_access_list_storage_key_cost(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the access list storage key cost.
Sourcepub fn tx_access_list_cost(&self, accounts: u64, storages: u64) -> u64
pub fn tx_access_list_cost(&self, accounts: u64, storages: u64) -> u64
Calculate the total gas cost for an access list.
This is a helper method that calculates the combined cost of:
accountsaddresses in the access liststoragesstorage keys in the access list
§Examples
use revm_context_interface::cfg::gas_params::GasParams;
use primitives::hardfork::SpecId;
let gas_params = GasParams::new_spec(SpecId::BERLIN);
// Calculate cost for 2 addresses and 5 storage keys
let cost = gas_params.tx_access_list_cost(2, 5);
assert_eq!(cost, 2 * 2400 + 5 * 1900); // 2 * ACCESS_LIST_ADDRESS + 5 * ACCESS_LIST_STORAGE_KEYSourcepub fn tx_access_list_floor_byte_multiplier(&self) -> u64
pub fn tx_access_list_floor_byte_multiplier(&self) -> u64
Floor tokens contributed per access-list byte (EIP-7981).
Zero before AMSTERDAM. From AMSTERDAM onward this is 4, so each
access-list byte contributes the same 64 gas to the floor as a calldata
byte under EIP-7976.
Sourcepub fn tx_floor_tokens_in_access_list(
&self,
accounts: u64,
storages: u64,
) -> u64
pub fn tx_floor_tokens_in_access_list( &self, accounts: u64, storages: u64, ) -> u64
Floor tokens contributed by an access list with the given address and
storage-key counts (EIP-7981). Each address is 20 bytes, each storage
key is 32 bytes; tokens per byte come from
tx_access_list_floor_byte_multiplier.
Sourcepub fn tx_base_stipend(&self) -> u64
pub fn tx_base_stipend(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the base transaction stipend.
Sourcepub fn tx_create_cost(&self) -> u64
pub fn tx_create_cost(&self) -> u64
Used in GasParams::initial_tx_gas to calculate the create cost.
Similar to the Self::create_cost method but it got activated in different fork,
Sourcepub fn tx_initcode_cost(&self, len: usize) -> u64
pub fn tx_initcode_cost(&self, len: usize) -> u64
Used in GasParams::initial_tx_gas to calculate the initcode cost per word of len.
Sourcepub fn initial_tx_gas(
&self,
input: &[u8],
is_create: bool,
access_list_accounts: u64,
access_list_storages: u64,
authorization_list_num: u64,
cpsb: u64,
) -> InitialAndFloorGas
pub fn initial_tx_gas( &self, input: &[u8], is_create: bool, access_list_accounts: u64, access_list_storages: u64, authorization_list_num: u64, cpsb: u64, ) -> InitialAndFloorGas
Initial gas that is deducted for transaction to be included. Initial gas contains initial stipend gas, gas for access list and input data.
Under EIP-8037, state gas is tracked separately in initial_state_gas,
while regular intrinsic gas accumulates in initial_regular_gas. The state
gas components are:
- EIP-7702 auth list state gas (per-auth account creation + metadata costs)
- For CREATE transactions:
create_state_gas(account creation + contract metadata)
Note: code_deposit_state_gas is not included since deployed code size is unknown at validation time.
§Returns
- Intrinsic gas (including state gas for CREATE)
- Number of tokens in calldata
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GasParams
impl<'de> Deserialize<'de> for GasParams
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
impl Eq for GasParams
Auto Trait Implementations§
impl Freeze for GasParams
impl RefUnwindSafe for GasParams
impl Send for GasParams
impl Sync for GasParams
impl Unpin for GasParams
impl UnsafeUnpin for GasParams
impl UnwindSafe for GasParams
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.