pub struct AccountLedger<UnlockingLen: Get<u32>> { /* private fields */ }
Expand description

General info about an account’s lock & stakes.

§Overview

The most complex part about this type are the staked and staked_future fields. To understand why the two fields exist and how they are used, it’s important to consider some facts:

  • when an account stakes, the staked amount is only eligible for rewards from the next era
  • all stakes are reset when a period ends - but this is done in a lazy fashion, account ledgers aren’t directly updated
  • stake and unstake operations are allowed only if the account has claimed all pending rewards

In order to keep track of current era stake, and next era stake, two fields are needed. Since it’s not allowed to stake/unstake if there are pending rewards, it’s guaranteed that the staked and staked_future eras are always consecutive. In order to understand if stake is still valid, it’s enough to check the period field of either staked or staked_future.

§Example

§Scenario 1

  • current era is 20, and current period is 1
  • staked is equal to: { voting: 100, build_and_earn: 50, era: 5, period: 1 }
  • staked_future is equal to: { voting: 100, build_and_earn: 100, era: 6, period: 1 }

The correct way to interpret this is:

  • account had staked 150 in total in era 5
  • account had increased their stake to 200 in total in era 6
  • since then, era 6, account hadn’t staked or unstaked anything or hasn’t claimed any rewards
  • since we’re in era 20 and period is still 1, the account’s stake for eras 7 to 20 is still 200

§Scenario 2

  • current era is 20, and current period is 1
  • staked is equal to: { voting: 0, build_and_earn: 0, era: 0, period: 0 }
  • staked_future is equal to: { voting: 0, build_and_earn: 350, era: 13, period: 1 }

The correct way to interpret this is:

  • staked entry is empty
  • account had called stake during era 12, and staked 350 for the next era
  • account hadn’t staked, unstaked or claimed rewards since then
  • since we’re in era 20 and period is still 1, the account’s stake for eras 13 to 20 is still 350

§Scenario 3

  • current era is 30, and current period is 2
  • period 1 ended after era 24, and period 2 started in era 25
  • staked is equal to: { voting: 100, build_and_earn: 300, era: 20, period: 1 }
  • staked_future is equal to None

The correct way to interpret this is:

  • in era 20, account had claimed rewards for the past eras, so only the staked entry remained
  • since then, account hadn’t staked, unstaked or claimed rewards
  • period 1 ended in era 24, which means that after that era, the staked entry is no longer valid
  • account had staked 400 in total from era 20 up to era 24 (inclusive)
  • account’s stake in era 25 is zero

Implementations§

source§

impl<UnlockingLen> AccountLedger<UnlockingLen>
where UnlockingLen: Get<u32>,

source

pub fn locked(&self) -> Balance

How much active locked amount an account has. This can be used for staking.

source

pub fn unlocking_chunks(&self) -> &[UnlockingChunk]

Unlocking chunks.

source

pub fn is_empty(&self) -> bool

Empty if no locked/unlocking/staked info exists.

source

pub fn active_locked_amount(&self) -> Balance

Returns active locked amount. If zero, means that associated account hasn’t got any active locked funds.

It is possible that some funds are undergoing the unlocking period, but they aren’t considered active in that case.

source

pub fn unlocking_amount(&self) -> Balance

Returns unlocking amount. If zero, means that associated account hasn’t got any unlocking chunks.

source

pub fn total_locked_amount(&self) -> Balance

Total locked amount by the user. Includes both active locked amount & unlocking amount.

source

pub fn add_lock_amount(&mut self, amount: Balance)

Adds the specified amount to the total locked amount.

source

pub fn subtract_lock_amount(&mut self, amount: Balance)

Subtracts the specified amount of the total locked amount.

source

pub fn add_unlocking_chunk( &mut self, amount: Balance, unlock_block: BlockNumber ) -> Result<(), AccountLedgerError>

Adds the specified amount to the unlocking chunks.

If entry for the specified block already exists, it’s updated.

If entry for the specified block doesn’t exist, it’s created and insertion is attempted. In case vector has no more capacity, error is returned, and whole operation is a noop.

source

pub fn unlockable_amount(&self, current_period: PeriodNumber) -> Balance

Amount available for unlocking.

source

pub fn claim_unlocked(&mut self, current_block_number: BlockNumber) -> Balance

Claims all of the fully unlocked chunks, and returns the total claimable amount.

source

pub fn consume_unlocking_chunks(&mut self) -> Balance

Consumes all of the unlocking chunks, and returns the total amount being unlocked.

source

pub fn stakeable_amount(&self, active_period: PeriodNumber) -> Balance

Amount that is available for staking.

This is equal to the total active locked amount, minus the staked amount already active.

source

pub fn staked_amount(&self, active_period: PeriodNumber) -> Balance

Amount that is staked, in respect to the currently active period.

source

pub fn staked_amount_for_type( &self, subperiod: Subperiod, period: PeriodNumber ) -> Balance

How much is staked for the specified subperiod, in respect to the specified era.

source

pub fn add_stake_amount( &mut self, amount: Balance, current_era: EraNumber, current_period_info: PeriodInfo ) -> Result<(), AccountLedgerError>

Adds the specified amount to total staked amount, if possible.

Staking can only be done for the ongoing period, and era.

  1. The period requirement enforces staking in the ongoing period.
  2. The era requirement enforces staking in the ongoing era.

The 2nd condition is needed to prevent stakers from building a significant history of stakes, without claiming the rewards. So if a historic era exists as an entry, stakers will first need to claim the pending rewards, before they can stake again.

Additionally, the staked amount must not exceed what’s available for staking.

source

pub fn unstake_amount( &mut self, amount: Balance, current_era: EraNumber, current_period_info: PeriodInfo ) -> Result<(), AccountLedgerError>

Subtracts the specified amount from the total staked amount, if possible.

Unstake can only be called if the entry for the current era exists. In case historic entry exists, rewards first need to be claimed, before unstaking is possible. Similar as with stake functionality, this is to prevent staker from building a significant history of stakes.

source

pub fn staked_period(&self) -> Option<PeriodNumber>

Period for which account has staking information or None if no staking information exists.

source

pub fn earliest_staked_era(&self) -> Option<EraNumber>

Earliest era for which the account has staking information or None if no staking information exists.

source

pub fn maybe_cleanup_expired( &mut self, valid_threshold_period: PeriodNumber ) -> bool

Cleanup staking information if it has expired.

§Args

valid_threshold_period - last period for which entries can still be considered valid.

true if any change was made, false otherwise.

source

pub fn claim_up_to_era( &mut self, era: EraNumber, period_end: Option<EraNumber> ) -> Result<EraStakePairIter, AccountLedgerError>

‘Claim’ rewards up to the specified era. Returns an iterator over the (era, amount) pairs, where amount describes the staked amount eligible for reward in the appropriate era.

If period_end is provided, it’s used to determine whether all applicable chunks have been claimed.

Trait Implementations§

source§

impl<UnlockingLen: Get<u32>> Clone for AccountLedger<UnlockingLen>

source§

fn clone(&self) -> Self

Returns a copy 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<UnlockingLen: Get<u32>> Debug for AccountLedger<UnlockingLen>

source§

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

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

impl<UnlockingLen: Get<u32>> Decode for AccountLedger<UnlockingLen>
where BoundedVec<UnlockingChunk, UnlockingLen>: Decode,

source§

fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy ) -> Result<Self, Error>

Attempt to deserialise the value from input.
§

fn decode_into<I>( input: &mut I, dst: &mut MaybeUninit<Self> ) -> Result<DecodeFinished, Error>
where I: Input,

Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§

fn skip<I>(input: &mut I) -> Result<(), Error>
where I: Input,

Attempt to skip the encoded value from input. Read more
§

fn encoded_fixed_size() -> Option<usize>

Returns the fixed encoded size of the type. Read more
source§

impl<UnlockingLen: Get<u32>> Default for AccountLedger<UnlockingLen>

source§

fn default() -> Self

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

impl<UnlockingLen: Get<u32>> Encode for AccountLedger<UnlockingLen>
where BoundedVec<UnlockingChunk, UnlockingLen>: Encode,

source§

fn size_hint(&self) -> usize

If possible give a hint of expected size of the encoding. Read more
source§

fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy )

Convert self to a slice and append it to the destination.
§

fn encode(&self) -> Vec<u8>

Convert self to an owned vector.
§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Convert self to a slice and then invoke the given closure with it.
§

fn encoded_size(&self) -> usize

Calculates the encoded size. Read more
source§

impl<UnlockingLen: Get<u32>> MaxEncodedLen for AccountLedger<UnlockingLen>
where BoundedVec<UnlockingChunk, UnlockingLen>: MaxEncodedLen,

source§

fn max_encoded_len() -> usize

Upper bound, in bytes, of the maximum encoded size of this item.
source§

impl<UnlockingLen: Get<u32>> PartialEq for AccountLedger<UnlockingLen>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<UnlockingLen> TypeInfo for AccountLedger<UnlockingLen>
where BoundedVec<UnlockingChunk, UnlockingLen>: TypeInfo + 'static, UnlockingLen: Get<u32> + 'static,

§

type Identity = AccountLedger<UnlockingLen>

The type identifying for which type info is provided. Read more
source§

fn type_info() -> Type

Returns the static type identifier for Self.
source§

impl<UnlockingLen: Get<u32>> EncodeLike for AccountLedger<UnlockingLen>
where BoundedVec<UnlockingChunk, UnlockingLen>: Encode,

source§

impl<UnlockingLen: Get<u32>> Eq for AccountLedger<UnlockingLen>

Auto Trait Implementations§

§

impl<UnlockingLen> RefUnwindSafe for AccountLedger<UnlockingLen>
where UnlockingLen: RefUnwindSafe,

§

impl<UnlockingLen> Send for AccountLedger<UnlockingLen>
where UnlockingLen: Send,

§

impl<UnlockingLen> Sync for AccountLedger<UnlockingLen>
where UnlockingLen: Sync,

§

impl<UnlockingLen> Unpin for AccountLedger<UnlockingLen>
where UnlockingLen: Unpin,

§

impl<UnlockingLen> UnwindSafe for AccountLedger<UnlockingLen>
where UnlockingLen: 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
§

impl<T> CheckedConversion for T

§

fn checked_from<T>(t: T) -> Option<Self>
where Self: TryFrom<T>,

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

fn checked_into<T>(self) -> Option<T>
where Self: TryInto<T>,

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

impl<T> Clear for T
where T: Default + Eq + PartialEq,

§

fn is_clear(&self) -> bool

True iff no bits are set.
§

fn clear() -> T

Return the value of Self that is clear.
§

impl<T> Conv for T

§

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

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

impl<T> DecodeAll for T
where T: Decode,

§

fn decode_all(input: &mut &[u8]) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
§

impl<T> DecodeLimit for T
where T: Decode,

§

fn decode_all_with_depth_limit( limit: u32, input: &mut &[u8] ) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
§

fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>
where I: Input,

Decode Self with the given maximum recursion depth and advance input by the number of bytes consumed. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

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

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

§

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

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

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

§

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

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

impl<T> FmtForward for T

§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Hashable for T
where T: Codec,

§

fn blake2_128(&self) -> [u8; 16]

§

fn blake2_256(&self) -> [u8; 32]

§

fn blake2_128_concat(&self) -> Vec<u8>

§

fn twox_128(&self) -> [u8; 16]

§

fn twox_256(&self) -> [u8; 32]

§

fn twox_64_concat(&self) -> Vec<u8>

§

fn identity(&self) -> Vec<u8>

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, 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.

§

impl<T, U> Into2<U> for T
where U: From2<T>,

§

fn into2(self) -> U

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T, U> IntoKey<U> for T
where U: FromKey<T>,

§

fn into_key(self) -> U

§

impl<T> IsType<T> for T

§

fn from_ref(t: &T) -> &T

Cast reference.
§

fn into_ref(&self) -> &T

Cast reference.
§

fn from_mut(t: &mut T) -> &mut T

Cast mutable reference.
§

fn into_mut(&mut self) -> &mut T

Cast mutable reference.
§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

§

impl<T> KeyedVec for T
where T: Codec,

§

fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8>

Return an encoding of Self prepended by given slice.
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

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

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

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

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

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

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

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

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

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

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

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

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

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

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> SaturatedConversion for T

§

fn saturated_from<T>(t: T) -> Self
where Self: UniqueSaturatedFrom<T>,

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

fn saturated_into<T>(self) -> T
where Self: UniqueSaturatedInto<T>,

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

impl<T> Tap for T

§

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

Immutable access to a value. Read more
§

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

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

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

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

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

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

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

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

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

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

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

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

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

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

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

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

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

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

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

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

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

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

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

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

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
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T, U> TryInto2<U> for T
where U: TryFrom2<T>,

§

type Error = <U as TryFrom2<T>>::Error

§

fn try_into2(self) -> Result<U, <U as TryFrom2<T>>::Error>

§

impl<T, U> TryIntoKey<U> for T
where U: TryFromKey<T>,

§

type Error = <U as TryFromKey<T>>::Error

§

fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>

§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

impl<T, S> UniqueSaturatedInto<T> for S
where T: Bounded, S: TryInto<T>,

§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> AssetId for T
where T: FullCodec + Clone + Eq + PartialEq + Debug + TypeInfo + MaxEncodedLen,

§

impl<S> Codec for S
where S: Decode + Encode,

§

impl<T> EncodeLike<&&T> for T
where T: Encode,

§

impl<T> EncodeLike<&T> for T
where T: Encode,

§

impl<T> EncodeLike<&mut T> for T
where T: Encode,

§

impl<T> EncodeLike<Arc<T>> for T
where T: Encode,

§

impl<T> EncodeLike<Box<T>> for T
where T: Encode,

§

impl<'a, T> EncodeLike<Cow<'a, T>> for T
where T: ToOwned + Encode,

§

impl<T> EncodeLike<Rc<T>> for T
where T: Encode,

§

impl<S> FullCodec for S
where S: Decode + FullEncode,

§

impl<S> FullEncode for S
where S: Encode + EncodeLike,

§

impl<T> JsonSchemaMaybe for T

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,

§

impl<T> Member for T
where T: Send + Sync + Debug + Eq + PartialEq + Clone + 'static,

§

impl<T> Parameter for T
where T: Codec + EncodeLike + Clone + Eq + Debug + TypeInfo,

§

impl<T> StaticTypeInfo for T
where T: TypeInfo + 'static,