pub enum ProtocolFeature {
Show 89 variants
_DeprecatedImplicitAccountCreation,
_DeprecatedRectifyInflation,
_DeprecatedAccessKeyNonceRange,
_DeprecatedFixApplyChunks,
_DeprecatedLowerStorageCost,
_DeprecatedDeleteActionRestriction,
_DeprecatedAccountVersions,
_DeprecatedTransactionSizeLimit,
_DeprecatedFixStorageUsage,
_DeprecatedCapMaxGasPrice,
_DeprecatedCountRefundReceiptsInGasLimit,
_DeprecatedMathExtension,
_DeprecatedRestoreReceiptsAfterFixApplyChunks,
_DeprecatedMinProtocolVersionNep92,
_DeprecatedMinProtocolVersionNep92Fix,
_DeprecatedCorrectRandomValue,
_DeprecatedEnableInflation,
_DeprecatedUpgradabilityFix,
_DeprecatedCreateHash,
_DeprecatedDeleteKeyStorageUsage,
_DeprecatedShardChunkHeaderUpgrade,
_DeprecatedCreateReceiptIdSwitchToCurrentBlock,
_DeprecatedFixedMinimumNewReceiptGas,
_DeprecatedWasmer2,
SimpleNightshade,
_DeprecatedLowerDataReceiptAndEcrecoverBaseCost,
_DeprecatedLowerRegularOpCost,
_DeprecatedLowerRegularOpCost2,
_DeprecatedLimitContractFunctionsNumber,
_DeprecatedBlockHeaderV3,
_DeprecatedAliasValidatorSelectionAlgorithm,
_DeprecatedSynchronizeBlockChunkProduction,
_DeprecatedCorrectStackLimit,
_DeprecatedAccessKeyNonceForImplicitAccounts,
_DeprecatedIncreaseDeploymentCost,
_DeprecatedFunctionCallWeight,
_DeprecatedLimitContractLocals,
_DeprecatedChunkNodesCache,
_DeprecatedLowerStorageKeyLimit,
_DeprecatedAltBn128,
_DeprecatedChunkOnlyProducers,
_DeprecatedMaxKickoutStake,
_DeprecatedAccountIdInFunctionCallPermission,
_DeprecatedZeroBalanceAccount,
_DeprecatedDelegateAction,
_DeprecatedEd25519Verify,
_DeprecatedComputeCosts,
_DeprecatedDecreaseFunctionCallBaseCost,
_DeprecatedFlatStorageReads,
_DeprecatedPreparationV2,
_DeprecatedNearVmRuntime,
_DeprecatedBlockHeaderV4,
SimpleNightshadeV2,
SimpleNightshadeV3,
_DeprecatedFixStakingThreshold,
_DeprecatedFixChunkProducerStakingThreshold,
FixContractLoadingCost,
_DeprecatedRejectBlocksWithOutdatedProtocolVersions,
_DeprecatedBLS12381,
_DeprecatedRestrictTla,
_DeprecatedTestnetFewerBlockProducers,
_DeprecatedStatelessValidation,
_DeprecatedEthImplicitAccounts,
_DeprecatedYieldExecution,
_DeprecatedFixMinStakeRatio,
_DeprecatedIncreaseStorageProofSizeSoftLimit,
ShuffleShardAssignments,
_DeprecatedCongestionControl,
_DeprecatedRemoveAccountWithLongStorageKey,
_DeprecatedChunkEndorsementV2,
_DeprecatedChunkEndorsementsInBlockHeader,
_DeprecatedStateStoredReceipt,
SimpleNightshadeV4,
SimpleNightshadeV5,
SimpleNightshadeV6,
_DeprecatedExcludeContractCodeFromStateWitness,
_DeprecatedBandwidthScheduler,
_DeprecatedCurrentEpochStateSync,
_DeprecatedRelaxedChunkValidation,
_DeprecatedRemoveCheckBalance,
ExcludeExistingCodeFromWitnessForCodeLen,
BlockHeightForReceiptId,
ProduceOptimisticBlock,
GlobalContracts,
ReducedGasRefunds,
VersionedStateWitness,
IncreaseMaxCongestionMissedChunks,
SaturatingFloatToInt,
ChunkPartChecks,
}
Expand description
New Protocol features should go here. Features are guarded by their corresponding feature flag.
For example, if we have ProtocolFeature::EVM
and a corresponding feature flag evm
, it will look
like
#[cfg(feature = “protocol_feature_evm”)] EVM code
Variants§
_DeprecatedImplicitAccountCreation
_DeprecatedRectifyInflation
_DeprecatedAccessKeyNonceRange
Add AccessKey
nonce range by setting nonce to (block_height - 1) * 1e6
, see
https://github.com/near/nearcore/issues/3779.
_DeprecatedFixApplyChunks
Don’t process any receipts for shard when chunk is not present. Always use gas price computed in the previous block.
_DeprecatedLowerStorageCost
_DeprecatedDeleteActionRestriction
_DeprecatedAccountVersions
Add versions to Account
data structure
_DeprecatedTransactionSizeLimit
_DeprecatedFixStorageUsage
Fix a bug in storage_usage
for account caused by #3824
_DeprecatedCapMaxGasPrice
Cap maximum gas price to 2,000,000,000 yoctoNEAR
_DeprecatedCountRefundReceiptsInGasLimit
_DeprecatedMathExtension
Add ripemd60
and ecrecover
host function
_DeprecatedRestoreReceiptsAfterFixApplyChunks
Restore receipts that were previously stuck because of https://github.com/near/nearcore/pull/4228.
_DeprecatedMinProtocolVersionNep92
Minimum protocol version for NEP-92
_DeprecatedMinProtocolVersionNep92Fix
Minimum protocol version for NEP-92 fix
_DeprecatedCorrectRandomValue
Creates a unique random seed to be provided to VMContext
from a given action_hash
and a given random_seed
_DeprecatedEnableInflation
The protocol version that enables reward on mainnet
_DeprecatedUpgradabilityFix
Fix upgrade to use the latest voted protocol version instead of the current epoch protocol version when there is no new change in protocol version
_DeprecatedCreateHash
Updates the way receipt ID, data ID and random seeds are constructed
_DeprecatedDeleteKeyStorageUsage
Fix the storage usage of the delete key action
_DeprecatedShardChunkHeaderUpgrade
Upgrade for shard chunk header
_DeprecatedCreateReceiptIdSwitchToCurrentBlock
Updates the way receipt ID is constructed to use current block hash instead of last block hash
_DeprecatedFixedMinimumNewReceiptGas
Pessimistic gas price estimation uses a fixed value of minimum_new_receipt_gas
to stop being
tied to the function call base cost
_DeprecatedWasmer2
This feature switch our WASM engine implementation from wasmer 0.* to wasmer 2.*, bringing better performance and reliability.
The implementations should be sufficiently similar for this to not be a protocol upgrade, but we conservatively do a protocol upgrade to be on the safe side.
Although wasmer2 is faster, we don’t change fees with this protocol version – we can safely do that in a separate step.
SimpleNightshade
_DeprecatedLowerDataReceiptAndEcrecoverBaseCost
_DeprecatedLowerRegularOpCost
Lowers the cost of wasm instruction due to switch to wasmer2.
_DeprecatedLowerRegularOpCost2
Lowers the cost of wasm instruction due to switch to faster, compiler-intrinsics based gas counter.
_DeprecatedLimitContractFunctionsNumber
Limit number of wasm functions in one contract. See https://github.com/near/nearcore/pull/4954 for more details.
_DeprecatedBlockHeaderV3
_DeprecatedAliasValidatorSelectionAlgorithm
Changes how we select validators for epoch and how we select validators within epoch. See https://github.com/near/NEPs/pull/167 for general description, note that we would not introduce chunk-only validators with this feature
_DeprecatedSynchronizeBlockChunkProduction
Make block producers produce chunks for the same block they would later produce to avoid network delays
_DeprecatedCorrectStackLimit
Change the algorithm to count WASM stack usage to avoid under counting in some cases.
_DeprecatedAccessKeyNonceForImplicitAccounts
Add AccessKey
nonce range for implicit accounts, as in AccessKeyNonceRange
feature.
_DeprecatedIncreaseDeploymentCost
Increase cost per deployed code byte to cover for the compilation steps that a deployment triggers. Only affects the action execution cost.
_DeprecatedFunctionCallWeight
_DeprecatedLimitContractLocals
This feature enforces a global limit on the function local declarations in a WebAssembly contract. See <…> for more information.
_DeprecatedChunkNodesCache
Ensure caching all nodes in the chunk for which touching trie node cost was charged. Charge for each such node only once per chunk at the first access time.
_DeprecatedLowerStorageKeyLimit
Lower max_length_storage_key
limit, which itself limits trie node sizes.
_DeprecatedAltBn128
_DeprecatedChunkOnlyProducers
_DeprecatedMaxKickoutStake
Ensure the total stake of validators that are kicked out does not exceed a percentage of total stakes
_DeprecatedAccountIdInFunctionCallPermission
Validate account id for function call access keys.
_DeprecatedZeroBalanceAccount
Zero Balance Account NEP 448: https://github.com/near/NEPs/pull/448
_DeprecatedDelegateAction
Execute a set of actions on behalf of another account.
Meta Transaction NEP-366: https://github.com/near/NEPs/blob/master/neps/nep-0366.md
_DeprecatedEd25519Verify
_DeprecatedComputeCosts
Decouple compute and gas costs of operations to safely limit the compute time it takes to process the chunk.
Compute Costs NEP-455: https://github.com/near/NEPs/blob/master/neps/nep-0455.md
_DeprecatedDecreaseFunctionCallBaseCost
Decrease the cost of function call action. Only affects the execution cost.
_DeprecatedFlatStorageReads
Enable flat storage for reads, reducing number of DB accesses from 2 * key.len()
in
the worst case to 2.
Flat Storage NEP-399: https://github.com/near/NEPs/blob/master/neps/nep-0399.md
_DeprecatedPreparationV2
Enables preparation V2. Note that this setting is not supported in production settings without NearVmRuntime enabled alongside it, as the VM runner would be too slow.
_DeprecatedNearVmRuntime
Enables Near-Vm. Note that this setting is not at all supported without PreparationV2, as it hardcodes preparation v2 code into the generated assembly.
_DeprecatedBlockHeaderV4
SimpleNightshadeV2
Resharding V2. A new implementation for resharding and a new shard layout for the production networks.
SimpleNightshadeV3
Built on top of Resharding V2. Changes shard layout to V3 to split shard 2 into two parts.
_DeprecatedFixStakingThreshold
In case not all validator seats are occupied our algorithm provide incorrect minimal seat price - it reports as alpha * sum_stake instead of alpha * sum_stake / (1 - alpha), where alpha is min stake ratio
_DeprecatedFixChunkProducerStakingThreshold
In case not all validator seats are occupied, the minimum seat price of a chunk producer used to depend on the number of existing shards, which is no longer the case.
FixContractLoadingCost
Charge for contract loading before it happens.
_DeprecatedRejectBlocksWithOutdatedProtocolVersions
Enables rejection of blocks with outdated protocol versions.
_DeprecatedBLS12381
_DeprecatedRestrictTla
_DeprecatedTestnetFewerBlockProducers
Increases the number of chunk producers.
_DeprecatedStatelessValidation
Enables stateless validation which is introduced in https://github.com/near/NEPs/pull/509 LowerValidatorKickoutPercentForDebugging: lower block and chunk validator kickout percent from 90 to 50. SingleShardTracking: single shard tracking for stateless validation. StateWitnessSizeLimit: state witness size limits. PerReceiptHardStorageProofLimit: limit the size of storage proof generated by a single receipt. WitnessTransactionLimits: size limits for transactions included in a ChunkStateWitness. NoChunkOnlyProducers: no chunk-only producers in stateless validation.
_DeprecatedEthImplicitAccounts
_DeprecatedYieldExecution
Enables yield execution which is introduced in https://github.com/near/NEPs/pull/519
_DeprecatedFixMinStakeRatio
Bring minimum required validator stake effectively to ~10K NEAR as of 2024-08-15. Fixes increase to 100K NEAR in the previous protocol version. See #11953 for more details.
_DeprecatedIncreaseStorageProofSizeSoftLimit
Increases main_storage_proof_size_soft_limit parameter from 3mb to 4mb
ShuffleShardAssignments
_DeprecatedCongestionControl
Cross-shard congestion control according to https://github.com/near/NEPs/pull/539.
_DeprecatedRemoveAccountWithLongStorageKey
Remove account with long storage key.
_DeprecatedChunkEndorsementV2
Change the structure of ChunkEndorsement to have (shard_id, epoch_id, height_created) instead of chunk_hash
_DeprecatedChunkEndorsementsInBlockHeader
_DeprecatedStateStoredReceipt
Store receipts in State in the StateStoredReceipt format.
SimpleNightshadeV4
Resharding V3 - Adding “game.hot.tg-0” boundary.
SimpleNightshadeV5
Resharding V3 - Adding “earn.kaiching” boundary.
SimpleNightshadeV6
Resharding V3 - Adding “650” boundary.
_DeprecatedExcludeContractCodeFromStateWitness
Exclude contract code from the chunk state witness and distribute it to chunk validators separately.
_DeprecatedBandwidthScheduler
A scheduler which limits bandwidth for sending receipts between shards.
_DeprecatedCurrentEpochStateSync
Indicates that the “sync_hash” used to identify the point in the chain to sync state to should no longer be the first block of the epoch, but a couple blocks after that in order to sync the current epoch’s state. This is not strictly a protocol feature, but is included here to coordinate among nodes
_DeprecatedRelaxedChunkValidation
Relaxed validation of transactions included in a chunk.
Chunks no longer become entirely invalid in case invalid transactions are included in the chunk. Instead the transactions are discarded during their conversion to receipts.
support for code that does not do relaxed chunk validation has now been removed.
_DeprecatedRemoveCheckBalance
This enables us to remove the expensive check_balance call from the runtime.
Support for code that does check balances has now been removed.
ExcludeExistingCodeFromWitnessForCodeLen
Exclude existing contract code in deploy-contract and delete-account actions from the chunk state witness. Instead of sending code in the witness, the code checks the code-size using the internal trie nodes.
BlockHeightForReceiptId
Use the block height instead of the block hash to calculate the receipt ID.
ProduceOptimisticBlock
Enable optimistic block production.
GlobalContracts
ReducedGasRefunds
NEP: https://github.com/near/NEPs/pull/536
Reduce the number of gas refund receipts by charging the current gas price rather than a pessimistic gas price. Also, introduce a new fee of 5% for gas refunds and charge the signer this fee for gas refund receipts.
VersionedStateWitness
Move from ChunkStateWitness being a single struct to a versioned enum.
IncreaseMaxCongestionMissedChunks
Increase max_congestion_missed_chunks from 5 to 125. At 125 missing chunks shard will be fully congested. At 100 missing chunks shard will be 80% congested, and transactions targeting it will be rejected as per reject_tx_congestion_threshold config.
It improves UX during long ranges of missing chunks, as transactions are much less likely to get rejected with ShardStuck error.
SaturatingFloatToInt
ChunkPartChecks
Implementations§
Trait Implementations§
Source§impl Clone for ProtocolFeature
impl Clone for ProtocolFeature
Source§fn clone(&self) -> ProtocolFeature
fn clone(&self) -> ProtocolFeature
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ProtocolFeature
impl Debug for ProtocolFeature
Source§impl Hash for ProtocolFeature
impl Hash for ProtocolFeature
Source§impl PartialEq for ProtocolFeature
impl PartialEq for ProtocolFeature
impl Copy for ProtocolFeature
impl Eq for ProtocolFeature
impl StructuralPartialEq for ProtocolFeature
Auto Trait Implementations§
impl Freeze for ProtocolFeature
impl RefUnwindSafe for ProtocolFeature
impl Send for ProtocolFeature
impl Sync for ProtocolFeature
impl Unpin for ProtocolFeature
impl UnwindSafe for ProtocolFeature
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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.