pub enum Event<T: Config> {
Show 30 variants
AuthorEnlisted {
author: Author<T>,
collateral: AuthorAsset<T>,
},
AuthorResigned {
author: Author<T>,
released: AuthorAsset<T>,
},
AuthorCollateralRaised {
author: Author<T>,
raised: AuthorAsset<T>,
},
AuthorTotalCollateral {
author: Author<T>,
collateral: AuthorAsset<T>,
},
AuthorFunded {
author: Author<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
InspectAuthorFund {
author: Author<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
InspectFund {
author: Author<T>,
funder: Funder<T>,
amount: AuthorAsset<T>,
},
IndexFunded {
index: IndexDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
InspectIndexFund {
index: IndexDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
PoolFunded {
pool: PoolDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
InspectPoolFund {
pool: PoolDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
AuthorDrawn {
author: Author<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
IndexDrawn {
index: IndexDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
PoolDrawn {
pool: PoolDigest<T>,
backer: Backer<T>,
amount: AuthorAsset<T>,
},
ScheduledRewards {
author: Author<T>,
rewards: Vec<(BlockNumberFor<T>, AuthorAsset<T>)>,
},
ScheduledPenalties {
author: Author<T>,
penalties: Vec<(BlockNumberFor<T>, Ratio<T>)>,
},
AuthorRewardScheduled {
author: Author<T>,
amount: AuthorAsset<T>,
at: BlockNumberFor<T>,
},
AuthorPenaltyScheduled {
author: Author<T>,
factor: Ratio<T>,
at: BlockNumberFor<T>,
},
AuthorStatus {
author: Author<T>,
status: AuthorStatus,
},
AuthorAtRisk {
author: Author<T>,
status: AuthorStatus,
until: BlockNumberFor<T>,
},
AuthorPenaltyForgiven {
author: Author<T>,
factor: Ratio<T>,
},
AuthorRewardReclaimed {
author: Author<T>,
amount: AuthorAsset<T>,
},
AuthorTotalHold {
author: Author<T>,
value: AuthorAsset<T>,
},
ElectionPrepared {
elects: Vec<Author<T>>,
},
ElectionFailed {
error: DispatchError,
},
IndexCreated {
index: IndexDigest<T>,
},
PoolCreated {
pool: PoolDigest<T>,
commission: Commission<T>,
manager: T::AccountId,
},
PoolManager {
digest: PoolDigest<T>,
manager: T::AccountId,
},
PoolSlotShare {
pool: PoolDigest<T>,
slots: (PoolDigest<T>, Shares<T>),
},
GenesisConfigUpdated(ForceGenesisConfig<T>),
// some variants omitted
}Expand description
The Event enum of this pallet
Variants§
AuthorEnlisted
Emitted when an account successfully enrolls, by enlisting itself as an author by locking the required collateral for the role.
AuthorResigned
Emitted when an author voluntarily resigns from the role, regains their collateral and exits active participation.
AuthorCollateralRaised
Emitted when an author’s total collateral is incremented i.e., additional collateral being added.
AuthorTotalCollateral
Emitted when the total collateral of an author is queried.
AuthorFunded
Emitted when a backer funds to an author via any funding mechanism such as direct, indexed and pooled.
InspectAuthorFund
Emitted when a backer queries their fund that is commited to a author directly.
InspectFund
Emitted when a backer queries their fund that is commited to an author through Direct, Index or Pool based funding mechanism.
IndexFunded
Emitted when a backer funds authors through an index-based funding mechanism.
InspectIndexFund
Emitted when a backer queries their fund that is commited to an index-based funding mechanism.
PoolFunded
Emitted when a backer funds authors through an pool-based funding mechanism.
InspectPoolFund
Emitted when a backer queries their fund that is commited to an pool-based funding mechanism.
AuthorDrawn
Emitted when previously committed funds are successfully released from an author back to the backer.
IndexDrawn
Emitted when previously committed funds are successfully released from an index back to the backer.
PoolDrawn
Emitted when previously committed funds are successfully released from an pool back to the backer.
ScheduledRewards
Emitted when scheduled rewards are queried for an author, including one or more future block numbers at which the rewards will be applied.
ScheduledPenalties
Emitted when scheduled penalties are queried for an author, including one or more future block numbers at which the penalties will be enforced.
AuthorRewardScheduled
Emitted when a reward is applied or scheduled to an author at a specific block.
AuthorPenaltyScheduled
Emitted when a penalty is applied or scheduled to an author at a specific block.
AuthorStatus
Emitted when an author’s lifecycle status changes, including transitions between probation, active, or other defined states.
AuthorAtRisk
Emitted when an author’s status is at risk until a specified block, due to negative behavior, affecting either permanence or probation state.
AuthorPenaltyForgiven
Emitted when a previously scheduled penalty for an author is forgiven.
AuthorRewardReclaimed
Emitted when a previously scheduled reward for an author is reclaimed.
AuthorTotalHold
Emitted when the held (locked) balance of an author is updated or queried.
ElectionPrepared
Emitted when an election preparation completes successfully and elected authors are stored for runtime-usage.
ElectionFailed
Emitted when an election preparation fails to complete successfully.
Fields
error: DispatchErrorIndexCreated
Emitted when a new funding index is created and registered.
Fields
index: IndexDigest<T>PoolCreated
Emitted when a new funding pool is created with a specified commission and an assigned pool manager.
PoolManager
Emitted when management ownership of a funding pool is transferred.
Emitted when a slot share weight within a pool are updated.
GenesisConfigUpdated(ForceGenesisConfig<T>)
A genesis config parameter was updated forcefully.
Trait Implementations§
Source§impl<T: Config> Decode for Event<T>where
Author<T>: Decode,
AuthorAsset<T>: Decode,
Backer<T>: Decode,
Funder<T>: Decode,
IndexDigest<T>: Decode,
PoolDigest<T>: Decode,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: Decode,
Vec<(BlockNumberFor<T>, Ratio<T>)>: Decode,
BlockNumberFor<T>: Decode,
Ratio<T>: Decode,
Vec<Author<T>>: Decode,
Commission<T>: Decode,
T::AccountId: Decode,
Shares<T>: Decode,
(PoolDigest<T>, Shares<T>): Decode,
ForceGenesisConfig<T>: Decode,
impl<T: Config> Decode for Event<T>where
Author<T>: Decode,
AuthorAsset<T>: Decode,
Backer<T>: Decode,
Funder<T>: Decode,
IndexDigest<T>: Decode,
PoolDigest<T>: Decode,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: Decode,
Vec<(BlockNumberFor<T>, Ratio<T>)>: Decode,
BlockNumberFor<T>: Decode,
Ratio<T>: Decode,
Vec<Author<T>>: Decode,
Commission<T>: Decode,
T::AccountId: Decode,
Shares<T>: Decode,
(PoolDigest<T>, Shares<T>): Decode,
ForceGenesisConfig<T>: Decode,
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Source§impl<T: Config> Encode for Event<T>where
Author<T>: Encode,
AuthorAsset<T>: Encode,
Backer<T>: Encode,
Funder<T>: Encode,
IndexDigest<T>: Encode,
PoolDigest<T>: Encode,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: Encode,
Vec<(BlockNumberFor<T>, Ratio<T>)>: Encode,
BlockNumberFor<T>: Encode,
Ratio<T>: Encode,
Vec<Author<T>>: Encode,
Commission<T>: Encode,
T::AccountId: Encode,
Shares<T>: Encode,
(PoolDigest<T>, Shares<T>): Encode,
ForceGenesisConfig<T>: Encode,
impl<T: Config> Encode for Event<T>where
Author<T>: Encode,
AuthorAsset<T>: Encode,
Backer<T>: Encode,
Funder<T>: Encode,
IndexDigest<T>: Encode,
PoolDigest<T>: Encode,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: Encode,
Vec<(BlockNumberFor<T>, Ratio<T>)>: Encode,
BlockNumberFor<T>: Encode,
Ratio<T>: Encode,
Vec<Author<T>>: Encode,
Commission<T>: Encode,
T::AccountId: Encode,
Shares<T>: Encode,
(PoolDigest<T>, Shares<T>): Encode,
ForceGenesisConfig<T>: Encode,
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Source§impl<T> TypeInfo for Event<T>where
Author<T>: TypeInfo + 'static,
AuthorAsset<T>: TypeInfo + 'static,
Backer<T>: TypeInfo + 'static,
Funder<T>: TypeInfo + 'static,
IndexDigest<T>: TypeInfo + 'static,
PoolDigest<T>: TypeInfo + 'static,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: TypeInfo + 'static,
Vec<(BlockNumberFor<T>, Ratio<T>)>: TypeInfo + 'static,
BlockNumberFor<T>: TypeInfo + 'static,
Ratio<T>: TypeInfo + 'static,
Vec<Author<T>>: TypeInfo + 'static,
Commission<T>: TypeInfo + 'static,
T::AccountId: TypeInfo + 'static,
(PoolDigest<T>, Shares<T>): TypeInfo + 'static,
ForceGenesisConfig<T>: TypeInfo + 'static,
PhantomData<T>: TypeInfo + 'static,
T: Config + 'static,
impl<T> TypeInfo for Event<T>where
Author<T>: TypeInfo + 'static,
AuthorAsset<T>: TypeInfo + 'static,
Backer<T>: TypeInfo + 'static,
Funder<T>: TypeInfo + 'static,
IndexDigest<T>: TypeInfo + 'static,
PoolDigest<T>: TypeInfo + 'static,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: TypeInfo + 'static,
Vec<(BlockNumberFor<T>, Ratio<T>)>: TypeInfo + 'static,
BlockNumberFor<T>: TypeInfo + 'static,
Ratio<T>: TypeInfo + 'static,
Vec<Author<T>>: TypeInfo + 'static,
Commission<T>: TypeInfo + 'static,
T::AccountId: TypeInfo + 'static,
(PoolDigest<T>, Shares<T>): TypeInfo + 'static,
ForceGenesisConfig<T>: TypeInfo + 'static,
PhantomData<T>: TypeInfo + 'static,
T: Config + 'static,
impl<T: Config> DecodeWithMemTracking for Event<T>where
Author<T>: DecodeWithMemTracking,
AuthorAsset<T>: DecodeWithMemTracking,
Backer<T>: DecodeWithMemTracking,
Funder<T>: DecodeWithMemTracking,
IndexDigest<T>: DecodeWithMemTracking,
PoolDigest<T>: DecodeWithMemTracking,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: DecodeWithMemTracking,
Vec<(BlockNumberFor<T>, Ratio<T>)>: DecodeWithMemTracking,
BlockNumberFor<T>: DecodeWithMemTracking,
Ratio<T>: DecodeWithMemTracking,
Vec<Author<T>>: DecodeWithMemTracking,
Commission<T>: DecodeWithMemTracking,
T::AccountId: DecodeWithMemTracking,
Shares<T>: DecodeWithMemTracking,
(PoolDigest<T>, Shares<T>): DecodeWithMemTracking,
ForceGenesisConfig<T>: DecodeWithMemTracking,
impl<T: Config> EncodeLike for Event<T>where
Author<T>: Encode,
AuthorAsset<T>: Encode,
Backer<T>: Encode,
Funder<T>: Encode,
IndexDigest<T>: Encode,
PoolDigest<T>: Encode,
Vec<(BlockNumberFor<T>, AuthorAsset<T>)>: Encode,
Vec<(BlockNumberFor<T>, Ratio<T>)>: Encode,
BlockNumberFor<T>: Encode,
Ratio<T>: Encode,
Vec<Author<T>>: Encode,
Commission<T>: Encode,
T::AccountId: Encode,
Shares<T>: Encode,
(PoolDigest<T>, Shares<T>): Encode,
ForceGenesisConfig<T>: Encode,
impl<T: Config> Eq for Event<T>
Auto Trait Implementations§
impl<T> Freeze for Event<T>where
<T as Config>::AccountId: Freeze,
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: Freeze,
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: Freeze,
<<<T as Config>::Block as Block>::Header as Header>::Number: Freeze,
<<T as Config>::CommitmentAdapter as CommitPool<<T as Config>::AccountId>>::Commission: Freeze,
<<T as Config>::CommitmentAdapter as CommitIndex<<T as Config>::AccountId>>::Shares: Freeze,
impl<T> RefUnwindSafe for Event<T>where
<T as Config>::AccountId: RefUnwindSafe,
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: RefUnwindSafe,
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: RefUnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: RefUnwindSafe,
<<T as Config>::CommitmentAdapter as CommitPool<<T as Config>::AccountId>>::Commission: RefUnwindSafe,
<<T as Config>::CommitmentAdapter as CommitIndex<<T as Config>::AccountId>>::Shares: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Event<T>where
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: Send,
T: Send,
impl<T> Sync for Event<T>where
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: Sync,
T: Sync,
impl<T> Unpin for Event<T>where
<T as Config>::AccountId: Unpin,
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: Unpin,
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: Unpin,
<<<T as Config>::Block as Block>::Header as Header>::Number: Unpin,
<<T as Config>::CommitmentAdapter as CommitPool<<T as Config>::AccountId>>::Commission: Unpin,
<<T as Config>::CommitmentAdapter as CommitIndex<<T as Config>::AccountId>>::Shares: Unpin,
T: Unpin,
impl<T> UnwindSafe for Event<T>where
<T as Config>::AccountId: UnwindSafe,
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: UnwindSafe,
<<T as Config>::CommitmentAdapter as Commitment<<T as Config>::AccountId>>::Digest: UnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: UnwindSafe,
<<T as Config>::CommitmentAdapter as CommitPool<<T as Config>::AccountId>>::Commission: UnwindSafe,
<<T as Config>::CommitmentAdapter as CommitIndex<<T as Config>::AccountId>>::Shares: UnwindSafe,
T: UnwindSafe,
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
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
impl<T, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
Source§impl<T, Time> Logging<Time> for Twhere
Time: Time,
impl<T, Time> Logging<Time> for Twhere
Time: Time,
Source§const FALLBACK_TARGET: &'static str = "routine"
const FALLBACK_TARGET: &'static str = "routine"
Default logging target if none is provided.
Most routines, especially offchain workers or background tasks, use this target for simplicity.
It allows a consistent place to look for routine logs without requiring every call to specify a target.
Note: This target is only a conveninence and may be somewhat vague. To ensure errors can still be traced accurately, the logged messages should include additional metadata (e.g., module name, error index, or contextual info) so that the source of the error can be identified even if the target is generic.
Source§type Logger = DispatchError
type Logger = DispatchError
The type taken and returned for logging.
We simply return the same [DispatchError] that was logged,
so logging does not change control flow or error propagation.
DispatchError is used because in Substrate it encompasses all
runtime errors - including module errors, token errors, arithmetic
issues, and transactional boundaries - making it the universal
substrate-side error representation.
Source§type Level = LogLevel
type Level = LogLevel
The log level type.
We use the LogLevel enum to standardize severity levels
(Info, Warn, Error, Debug) across all routine logs.
Source§fn log(
level: <T as Logging<Time>>::Level,
err: &<T as Logging<Time>>::Logger,
timestamp: Time,
target: Option<&str>,
fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>,
) -> <T as Logging<Time>>::Logger
fn log( level: <T as Logging<Time>>::Level, err: &<T as Logging<Time>>::Logger, timestamp: Time, target: Option<&str>, fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>, ) -> <T as Logging<Time>>::Logger
Source§fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
Source§fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read more§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
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 Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.