pub struct Pallet<T>(_);
Expand description

The pallet implementing the on-chain logic.

Implementations

Update the ledger while bonding ring and compute the KTON reward

Update the ledger while bonding controller with KTON

Turn the expired deposit items into normal bond

The total power that can be slashed from a stash account as of right now.

Update the ledger for a controller.

BE CAREFUL: This will also update the stash lock. DO NOT modify the locks’ staking amount outside this function.

Update the staking pool, once any account change its bond.

Chill a stash account.

Actually make a payment to a staker. This uses the currency’s reward function to pay the right payee for the given staker account.

Plan a new session potentially trigger a new era.

Start a session potentially starting an era.

End a session potentially ending an era.

  • Increment active_era.index,
  • reset active_era.start,
  • update BondedEras and apply slashes.

Compute payout for era.

Plan a new era.

  • Bump the current era storage (which holds the latest planned era).
  • Store start session index for the new planned era.
  • Clean old era information.
  • Store staking information for the new planned era

Returns the new validator set.

Process the output of the election.

Store staking information for the new planned era

Consume a set of [Supports] from [sp_npos_elections] and collect them into a Exposure.

Remove all associated data of a stash account from the staking system.

Assumes storage is upgraded before calling.

This is called:

  • after a withdraw_unbond() call that frees all of a stash’s bonded balance.
  • through reap_stash() if the balance has fallen to zero (through slashing).

Clear all era information for given era.

Apply previously-unapplied slashes on the beginning of a new era, after a delay.

Add reward points to validators using their stash account ID.

Validators are keyed by stash account ID and must be in the current elected set.

For each element in the iterator the given number of points in u32 is added to the validator, thus duplicates are handled.

At the end of the era each the total payout will be distributed among validator relatively to their points.

COMPLEXITY: Complexity is number_of_validator_to_reward x current_elected_len. If you need to reward lots of validator consider using reward_by_indices.

Ensures that at the end of the current session there will be a new era.

Get all of the voters that are eligible for the npos election.

maybe_max_len can imposes a cap on the number of voters returned; First all the validator are included in no particular order, then remainder is taken from the nominators, as returned by Config::SortedListProvider.

This will use nominators, and all the validators will inject a self vote.

This function is self-weighing as [DispatchClass::Mandatory].

Slashing

All nominations that have been submitted before the last non-zero slash of the validator are auto-chilled, but still count towards the limit imposed by maybe_max_len.

Get the targets for an upcoming npos election.

This function is self-weighing as [DispatchClass::Mandatory].

This function will add a nominator to the Nominators storage map, and [SortedListProvider].

If the nominator already exists, their nominations will be updated.

NOTE: you must ALWAYS use this function to add nominator or update their targets. Any access to Nominators or VoterList outside of this function is almost certainly wrong.

This function will remove a nominator from the Nominators storage map, and [SortedListProvider].

Returns true if who was removed from Nominators, otherwise false.

NOTE: you must ALWAYS use this function to remove a nominator from the system. Any access to Nominators or VoterList outside of this function is almost certainly wrong.

This function will add a validator to the Validators storage map.

If the validator already exists, their preferences will be updated.

NOTE: you must ALWAYS use this function to add a validator to the system. Any access to Validators or VoterList outside of this function is almost certainly wrong.

This function will remove a validator from the Validators storage map.

Returns true if who was removed from Validators, otherwise false.

NOTE: you must ALWAYS use this function to remove a validator from the system. Any access to Validators or VoterList outside of this function is almost certainly wrong.

Take the origin account as a stash and lock up value of its balance. controller will be the account that controls it.

value must be more than the minimum_balance specified by T::Currency.

The dispatch origin for this call must be Signed by the stash account.

Emits Bonded.

  • Independent of the arguments. Moderate complexity.
  • O(1).
  • Three extra DB entries.
NOTE: Two of the storage writes (Self::bonded, Self::payee) are never cleaned unless the origin falls below existential deposit and gets removed as dust.

Add some extra amount that have appeared in the stash free_balance into the balance up for staking.

The dispatch origin for this call must be Signed by the stash, not the controller.

Use this if there are additional funds in your stash account that you wish to bond. Unlike bond or unbond this function does not impose any limitation on the amount that can be added.

Emits Bonded.

  • Independent of the arguments. Insignificant complexity.
  • O(1).

Deposit some extra amount ring, and return kton to the controller.

The dispatch origin for this call must be Signed by the stash, not the controller.

Is a no-op if value to be deposited is zero.

  • Independent of the arguments. Insignificant complexity.
  • O(1).
  • One DB entry.

DB Weight:

  • Read: Era Election Status, Bonded, Ledger, [Origin Account]
  • Write: [Origin Account], Ledger

Schedule a portion of the stash to be unlocked ready for transfer out after the bond period ends. If this leaves an amount actively bonded less than T::Currency::minimum_balance(), then it is increased to the full amount.

The dispatch origin for this call must be Signed by the controller, not the stash.

Once the unlock period is done, the funds will be withdrew automatically and ready for transfer.

No more than a limited number of unlocking chunks (see MAX_UNLOCKING_CHUNKS) can co-exists at the same time. In that case, [StakingLock::shrink] need to be called first to remove some of the chunks (if possible).

If a user encounters the InsufficientBond error when calling this extrinsic, they should call chill first in order to free up their bonded funds.

After all pledged Ring and Kton are unbonded, the bonded accounts, namely stash and controller, will also be unbonded. Once user want to bond again, the bond method should be called. If there are still pledged Ring or Kton and user want to bond more values, the bond_extra method should be called.

Remove any unlocked chunks from the unlocking queue from our management.

This essentially frees up that balance to be used by the stash account to do whatever it wants.

The dispatch origin for this call must be Signed by the controller.

Emits Withdrawn.

See also Call::unbond.

Complexity O(S) where S is the number of slashing spans to remove NOTE: Weight annotation is the kill scenario, we refund otherwise.

Stash accounts can get their ring back after the depositing time exceeded, and the ring getting back is still in staking status.

  • Independent of the arguments. Insignificant complexity.
  • One storage read.
  • One storage write.
  • Writes are limited to the origin account key.

DB Weight:

  • Read: Ledger, [Origin Account]
  • Write: [Origin Account], Ledger

Claim deposits while the depositing time has not been exceeded, the ring will not be slashed, but the account is required to pay KTON as punish.

Refer to https://talk.darwinia.network/topics/55

Assume the expire_time is a unique ID for the deposit

  • Independent of the arguments. Insignificant complexity.
  • One storage read.
  • One storage write.
  • Writes are limited to the origin account key.

DB Weight:

  • Read: Ledger, Locks, [Origin Account]
  • Write: [Origin Account], Locks, Ledger

Declare the desire to validate for the origin controller.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.

Declare the desire to nominate targets for the origin controller.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.

  • The transaction’s complexity is proportional to the size of targets (N) which is capped at CompactAssignments::LIMIT (MAX_NOMINATIONS).
  • Both the reads and writes follow a similar pattern.

Declare no desire to either validate or nominate.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.

  • Independent of the arguments. Insignificant complexity.
  • Contains one read.
  • Writes are limited to the origin account key.

(Re-)set the payment target for a controller.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.

  • Independent of the arguments. Insignificant complexity.
  • Contains a limited number of reads.
  • Writes are limited to the origin account key.

  • Weight: O(1)
  • DB Weight:
    • Read: Ledger
    • Write: Payee

(Re-)set the controller of a stash.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the stash, not the controller.

  • Independent of the arguments. Insignificant complexity.
  • Contains a limited number of reads.
  • Writes are limited to the origin account key.

Weight: O(1) DB Weight:

  • Read: Bonded, Ledger New Controller, Ledger Old Controller
  • Write: Bonded, Ledger New Controller, Ledger Old Controller

Sets the ideal number of validators.

The dispatch origin must be Root.

Weight: O(1) Write: Validator Count

Increments the ideal number of validators.

The dispatch origin must be Root.

Same as Self::set_validator_count.

Scale up the ideal number of validators by a factor.

The dispatch origin must be Root.

Same as Self::set_validator_count.

Force there to be no new eras indefinitely.

The dispatch origin must be Root.

Warning

The election process starts multiple blocks before the end of the era. Thus the election process may be ongoing when this is called. In this case the election will continue until the next era is triggered.

  • No arguments.
  • Weight: O(1)
  • Write: ForceEra

Force there to be a new era at the end of the next session. After this, it will be reset to normal (non-forced) behaviour.

The dispatch origin must be Root.

Warning

The election process starts multiple blocks before the end of the era. If this is called just before a new era is triggered, the election process may not have enough blocks to get a result.

  • No arguments.
  • Weight: O(1)
  • Write ForceEra

Set the validators who cannot be slashed (if any).

The dispatch origin must be Root.

  • O(V)
  • Write: Invulnerables

Force a current staker to become completely unstaked, immediately.

The dispatch origin must be Root.

O(S) where S is the number of slashing spans to be removed Reads: Bonded, Slashing Spans, Account, Locks Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Account, Locks Writes Each: SpanSlash * S

Force there to be a new era at the end of sessions indefinitely.

The dispatch origin must be Root.

Warning

The election process starts multiple blocks before the end of the era. If this is called just before a new era is triggered, the election process may not have enough blocks to get a result.

  • Weight: O(1)
  • Write: ForceEra

Cancel enactment of a deferred slash.

Can be called by the T::SlashCancelOrigin.

Parameters: era and indices of the slashes for that era to kill.

Complexity: O(U + S) with U unapplied slashes weighted with U=1000 and S is the number of slash indices to be canceled.

  • Read: Unapplied Slashes
  • Write: Unapplied Slashes

Pay out all the stakers behind a single validator for a single era.

  • validator_stash is the stash account of the validator. Their nominators, up to T::MaxNominatorRewardedPerValidator, will also receive their rewards.
  • era may be any era between [current_era - history_depth; current_era].

The origin of this call must be Signed. Any account can call this function, even if it is not one of the stakers.

  • Time complexity: at most O(MaxNominatorRewardedPerValidator).
  • Contains a limited number of reads and writes.

N is the Number of payouts for the validator (including the validator) Weight:

  • Reward Destination Staked: O(N)

  • Reward Destination Controller (Creating): O(N)

    NOTE: weights are assuming that payouts are made to alive stash account (Staked). Paying even a dead controller is cheaper weight-wise. We don’t do any refunds here.

Rebond a portion of the stash scheduled to be unlocked.

The dispatch origin must be signed by the controller.

  • Time complexity: O(L), where L is unlocking chunks
  • Bounded by MAX_UNLOCKING_CHUNKS.
  • Storage changes: Can’t increase storage, only decrease it.

Set HistoryDepth value. This function will delete any history information when HistoryDepth is reduced.

Parameters:

  • new_history_depth: The new history depth you would like to set.
  • era_items_deleted: The number of items that will be deleted by this dispatch. This should report all the storage items that will be deleted by clearing old era history. Needed to report an accurate weight for the dispatch. Trusted by Root to report an accurate number.

Origin must be root.

  • E: Number of history depths removed, i.e. 10 -> 7 = 3
  • Weight: O(E)
  • DB Weight:
    • Reads: Current Era, History Depth
    • Writes: History Depth
    • Clear Prefix Each: Era Stakers, EraStakersClipped, ErasValidatorPrefs
    • Writes Each: ErasValidatorReward, ErasRewardPoints, ErasTotalStake, ErasStartSessionIndex

Remove all data structures concerning a staker/stash once it is at a state where it can be considered dust in the staking system. The requirements are:

  1. the total_balance of the stash is below existential deposit.
  2. or, the ledger.total of the stash is below existential deposit.

The former can happen in cases like a slash; the latter when a fully unbonded account is still receiving staking rewards in RewardDestination::Staked.

It can be called by anyone, as long as stash meets the above requirements.

Refunds the transaction fees upon successful execution.

Remove the given nominations from the calling validator.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.

  • who: A list of nominator stash accounts who are nominating this validator which should no longer be nominating this validator.

Note: Making this call only makes sense if you first set the validator preferences to block any further nominations.

Update the various staking configurations.

  • min_nominator_bond: The minimum active bond needed to be a nominator.
  • min_validator_bond: The minimum active bond needed to be a validator.
  • max_nominator_count: The max number of users who can be a nominator at once. When set to None, no limit is enforced.
  • max_validator_count: The max number of users who can be a validator at once. When set to None, no limit is enforced.
  • chill_threshold: The ratio of max_nominator_count or max_validator_count which should be filled in order for the chill_other transaction to work.
  • min_commission: The minimum amount of commission that each validators must maintain. This is checked only upon calling validate. Existing validators are not affected.

Origin must be Root to call this function.

NOTE: Existing nominators and validators will not be affected by this update. to kick people under the new limits, chill_other should be called.

Declare a controller to stop participating as either a validator or nominator.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed, but can be called by anyone.

If the caller is the same as the controller being targeted, then no further checks are enforced, and this function behaves just like chill.

If the caller is different than the controller being targeted, the following conditions must be met:

  • A ChillThreshold must be set and checked which defines how close to the max nominators or validators we must reach before users can start chilling one-another.
  • A MaxNominatorCount and MaxValidatorCount must be set which is used to determine how close we are to the threshold.
  • A MinNominatorBond and MinValidatorBond must be set and checked, which determines if this is a person that should be chilled because they have not met the threshold bond required.

This can be helpful if bond requirements are updated, and we need to remove old users who do not satisfy these requirements.

Number of eras to keep in history.

Information is kept for eras in [current_era - history_depth; current_era].

Must be more than the number of eras delayed by session otherwise. I.e. active era must always be in history. I.e. active_era > current_era - history_depth must be guaranteed.

The ideal number of staking participants.

Minimum number of staking participants before emergency conditions are imposed.

Any validators that may never be slashed or forcibly kicked. It’s a Vec since they’re easy to initialize and the performance hit is minimal (we expect no more than four invulnerables) and restricted to testnets.

Map from all locked “stash” accounts to the controller account.

Map from all (unlocked) “controller” accounts to the info regarding the staking.

Where the reward payment should be made. Keyed by stash.

The map from (wannabe) validator stash key to the preferences of that validator.

The map from nominator stash key to the set of stash keys of all validators to nominate.

The current era index.

This is the latest planned era, depending on how the Session pallet queues the validator set, it might be active or not.

The active era information, it holds index and start.

The active era is the era being currently rewarded. Validator set of this era must be equal to SessionInterface::validators.

The session index at which the era start for the last HISTORY_DEPTH eras.

Note: This tracks the starting session (i.e. session index when era start being active) for the eras in [CurrentEra - HISTORY_DEPTH, CurrentEra].

Exposure of validator at era.

This is keyed first by the era index to allow bulk deletion and then the stash account.

Is it removed after HISTORY_DEPTH eras. If stakers hasn’t been set or has been removed then empty exposure is returned.

Clipped Exposure of validator at era.

This is similar to ErasStakers but number of nominators exposed is reduced to the T::MaxNominatorRewardedPerValidator biggest stakers. (Note: the field total and own of the exposure remains unchanged). This is used to limit the i/o cost for the nominator payout.

This is keyed fist by the era index to allow bulk deletion and then the stash account.

Is it removed after HISTORY_DEPTH eras. If stakers hasn’t been set or has been removed then empty exposure is returned.

Similar to ErasStakers, this holds the preferences of validators.

This is keyed first by the era index to allow bulk deletion and then the stash account.

Is it removed after HISTORY_DEPTH eras.

The total validator era payout for the last HISTORY_DEPTH eras.

Eras that haven’t finished yet or has been removed doesn’t have reward.

Rewards for the last HISTORY_DEPTH eras. If reward hasn’t been set or has been removed then 0 reward is returned.

The total amount staked for the last HISTORY_DEPTH eras. If total hasn’t been set or has been removed then 0 stake is returned.

Mode of era forcing.

The percentage of the slash that is distributed to reporters.

The rest of the slashed value is handled by the Slash.

The amount of currency given to reporters of a slash event which was canceled by extraordinary circumstances (e.g. governance).

The last planned session scheduled by the session pallet.

This is basically in sync with the call to [pallet_session::SessionManager::new_session].

Indices of validators that have offended in the active era and whether they are currently disabled.

This value should be a superset of disabled validators since not all offences lead to the validator being disabled (if there was no slash). This is needed to track the percentage of validators that have offended in the current era, ensuring a new era is forced if OffendingValidatorsThreshold is reached. The vec is always kept sorted so that we can find whether a given validator has previously offended using binary search. It gets cleared when the era ends.

The chain’s running time form genesis in milliseconds, use for calculate darwinia era payout

The percentage of the total payout that is distributed to validators and nominators

The reset might go to Treasury or something else.

Total RING in pool.

Total KTON in pool.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

The account identifier type.

The block number type.

Maximum number of votes per voter that this data provider is providing.

The number of targets to elect. Read more

All possible voters for the election. Read more

All possible targets for the election, i.e. the candidates. Read more

Provide a best effort prediction about when the next election is about to happen. Read more

Add reward points to block authors:

  • 20 points to the block producer for producing a (non-uncle) block in the relay chain,
  • 2 points to the block producer for each reference to a previously unreferenced uncle, and
  • 1 point to the producer of each referenced uncle block.

Note that the given account ID is the author of the current block.

Note that the given account ID authored the given uncle, and how many blocks older than the current block it is (age >= 0, so siblings are allowed) Read more

Returns the current storage version as supported by the pallet.

Returns the on-chain storage version of the pallet as stored in the storage.

The block is being initialized. Implement to have something happen. Read more

The block is being finalized. Implement to have something happen.

Run integrity test. Read more

This will be run when the block is being finalized (before on_finalize). Implement to have something happen using the remaining weight. Will not fire if the remaining weight is 0. Return the weight used, the hook will subtract it from current weight used and pass the result to the next on_idle hook if it exists. Read more

Perform a module upgrade. Read more

Implementing this function on a module allows you to perform long-running tasks that make (by default) validators generate transactions that feed results of those long-running computations back on chain. Read more

Run integrity test. Read more

This function is being called after every block import (when fully synced). Read more

The block is being finalized. Implement to have something happen. Read more

Something that should happen at genesis.

The block is being finalized. Implement to have something happen in case there is leftover weight. Check the passed remaining_weight to make sure it is high enough to allow for your pallet’s extra computation. Read more

The block is being initialized. Implement to have something happen. Read more

This is intended to be used with FilterHistoricalOffences.

A handler for an offence of a particular kind. Read more

Perform a module upgrade. Read more

Index of the pallet as configured in the runtime.

Name of the pallet as configured in the runtime.

Name of the Rust module containing the pallet.

Version of the crate containing the pallet.

The number of pallets’ information that this type represents. Read more

Extend the given vector by all of the pallets’ information that this type represents. Read more

All of the pallets’ information that this type represents.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

If there was a validator set change, its returns the set of new validators along with their full identifications. Read more

Plan a new session, and optionally provide the new validator set. Read more

Same as new_session, but it this should only be called at genesis. Read more

Start an already planned session. Read more

End the session. Read more

Get the current VoteWeight of who.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Convert from a value of T into an equivalent instance of Option<Self>. Read more

Consume self to return Some equivalent value of Option<T>. Read more

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

Converts self into a target type. Read more

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

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

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

Causes self to use its Display implementation when Debug-formatted. Read more

Causes self to use its LowerExp implementation when Debug-formatted. Read more

Causes self to use its LowerHex implementation when Debug-formatted. Read more

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

Causes self to use its Pointer implementation when Debug-formatted. Read more

Causes self to use its UpperExp implementation when Debug-formatted. Read more

Causes self to use its UpperHex implementation when Debug-formatted. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Cast reference.

Cast reference.

Cast mutable reference.

Cast mutable reference.

Get a reference to the inner from the outer.

Get a mutable reference to the inner from the outer.

Performs the conversion.

Pipes by value. This is generally the method you want to use. Read more

Borrows self and passes that borrow into the pipe function. Read more

Mutably borrows self and passes that borrow into the pipe function. Read more

Borrows self, then passes self.borrow() into the pipe function. Read more

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more

Borrows self, then passes self.as_ref() into the pipe function.

Mutably borrows self, then passes self.as_mut() into the pipe function. Read more

Borrows self, then passes self.deref() into the pipe function.

Mutably borrows self, then passes self.deref_mut() into the pipe function. Read more

Pipes a value into a function that cannot ordinarily be called in suffix position. Read more

Pipes a trait borrow into a function that cannot normally be called in suffix position. Read more

Pipes a trait mutable borrow into a function that cannot normally be called in suffix position. Read more

Pipes a trait borrow into a function that cannot normally be called in suffix position. Read more

Pipes a trait mutable borrow into a function that cannot normally be called in suffix position. Read more

Pipes a dereference into a function that cannot normally be called in suffix position. Read more

Pipes a mutable dereference into a function that cannot normally be called in suffix position. Read more

Pipes a reference into a function that cannot ordinarily be called in suffix position. Read more

Pipes a mutable reference into a function that cannot ordinarily be called in suffix position. Read more

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

Should always be Self

Should always be Self

Convert from a value of T into an equivalent instance of Self. Read more

Consume self to return an equivalent value of T. Read more

Immutable access to a value. Read more

Mutable access to a value. Read more

Immutable access to the Borrow<B> of a value. Read more

Mutable access to the BorrowMut<B> of a value. Read more

Immutable access to the AsRef<R> view of a value. Read more

Mutable access to the AsMut<R> view of a value. Read more

Immutable access to the Deref::Target of a value. Read more

Mutable access to the Deref::Target of a value. Read more

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

Calls .tap_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_borrow() only in debug builds, and is erased in release builds. Read more

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_ref() only in debug builds, and is erased in release builds. Read more

Calls .tap_ref_mut() only in debug builds, and is erased in release builds. Read more

Calls .tap_deref() only in debug builds, and is erased in release builds. Read more

Calls .tap_deref_mut() only in debug builds, and is erased in release builds. Read more

Provides immutable access for inspection. Read more

Calls tap in debug builds, and does nothing in release builds.

Provides mutable access for modification. Read more

Calls tap_mut in debug builds, and does nothing in release builds.

Provides immutable access to the reference for inspection.

Calls tap_ref in debug builds, and does nothing in release builds.

Provides mutable access to the reference for modification.

Calls tap_ref_mut in debug builds, and does nothing in release builds.

Provides immutable access to the borrow for inspection. Read more

Calls tap_borrow in debug builds, and does nothing in release builds.

Provides mutable access to the borrow for modification.

Calls tap_borrow_mut in debug builds, and does nothing in release builds. Read more

Immutably dereferences self for inspection.

Calls tap_deref in debug builds, and does nothing in release builds.

Mutably dereferences self for modification.

Calls tap_deref_mut in debug builds, and does nothing in release builds. Read more

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

Attempts to convert self into T using TryInto<T>. Read more

Attempts to convert self into a target type. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The counterpart to unchecked_from.

Consume self to return an equivalent value of T.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more