Struct pallet_dkg_metadata::pallet::Pallet
source · pub struct Pallet<T>(_);
Expand description
The Pallet
struct, the main type that implements traits and standalone
functions within the pallet.
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn set_signature_threshold(
origin: OriginFor<T>,
new_threshold: u16
) -> DispatchResultWithPostInfo
pub fn set_signature_threshold( origin: OriginFor<T>, new_threshold: u16 ) -> DispatchResultWithPostInfo
Set the pending signature threshold for the session following the next session.
We cannot assume that the next DKG has not already completed keygen. After all, if we are in a new session the next DKG may have already completed. Therefore, when we update the thresholds we are updating a threshold that will become the next threshold after the next session update.
origin
- The account origin.new_threshold
- The new signature threshold for the DKG.
sourcepub fn set_keygen_threshold(
origin: OriginFor<T>,
new_threshold: u16
) -> DispatchResultWithPostInfo
pub fn set_keygen_threshold( origin: OriginFor<T>, new_threshold: u16 ) -> DispatchResultWithPostInfo
Set the pending keygen threshold for the session following the next session.
We cannot assume that the next DKG has not already completed keygen. After all, if we are in a new session the next DKG may have already completed. Therefore, when we update the thresholds we are updating a threshold that will become the next threshold after the next session update.
origin
- The account origin.new_threshold
- The new keygen threshold for the DKG.
sourcepub fn submit_public_key(
origin: OriginFor<T>,
keys_and_signatures: AggregatedPublicKeys
) -> DispatchResultWithPostInfo
pub fn submit_public_key( origin: OriginFor<T>, keys_and_signatures: AggregatedPublicKeys ) -> DispatchResultWithPostInfo
Submits and stores the active public key for the genesis session into the on-chain storage. This is primarily used to separate the genesis public key submission from non-genesis rounds.
Can only be submitted by the current authorities. It is also required that a
SignatureThreshold
of submissions is reached in order to successfully
store the public key on-chain.
origin
- The account origin.keys_and_signatures
- The aggregated public keys and signatures for possible current DKG public keys.
sourcepub fn submit_next_public_key(
origin: OriginFor<T>,
keys_and_signatures: AggregatedPublicKeys
) -> DispatchResultWithPostInfo
pub fn submit_next_public_key( origin: OriginFor<T>, keys_and_signatures: AggregatedPublicKeys ) -> DispatchResultWithPostInfo
Submits and stores the next public key for the next session into the on-chain storage.
Can only be submitted by the next authorities. It is also required that a
NextSignatureThreshold
of submissions is reached in order to successfully
store the public key on-chain.
origin
- The account origin.keys_and_signatures
- The aggregated public keys and signatures for possible next DKG public keys.
sourcepub fn submit_misbehaviour_reports(
origin: OriginFor<T>,
reports: AggregatedMisbehaviourReports<T::DKGId, T::MaxSignatureLength, T::MaxReporters>
) -> DispatchResultWithPostInfo
pub fn submit_misbehaviour_reports( origin: OriginFor<T>, reports: AggregatedMisbehaviourReports<T::DKGId, T::MaxSignatureLength, T::MaxReporters> ) -> DispatchResultWithPostInfo
Submits misbehaviour reports on chain. Signatures of the offending authority are verified against the current or next authorities depending on the type of misbehaviour.
- Keygen: Verifies against the next authorities, since they are doing keygen.
- Signing: Verifies against the current authorities, since they are doing signing.
Verifies the reports against the respective thresholds and if enough reports are met begins to jail and decrease the reputation of the offending authority.
The misbehaviour reputation update is: AUTHORITY_REPUTATION = DECAY_PERCENTAGE * AUTHORITY_REPUTATION
If there are not enough unjailed keygen authorities to perform a keygen after the next session, then we deduct the pending keygen threshold (and pending signing threshold) accordingly.
origin
- The account origin.reports
- The aggregated misbehaviour reports containing signatures of an offending authority
sourcepub fn unjail(origin: OriginFor<T>) -> DispatchResultWithPostInfo
pub fn unjail(origin: OriginFor<T>) -> DispatchResultWithPostInfo
Attempts to remove an authority from all possible jails (keygen & signing). This can only be called by the controller of the authority in jail. The origin must map directly to the authority in jail.
The authority’s jail sentence for either keygen or signing must be elapsed for the authority to be removed from the jail.
origin
- The account origin.
sourcepub fn force_unjail_keygen(
origin: OriginFor<T>,
authority: T::DKGId
) -> DispatchResultWithPostInfo
pub fn force_unjail_keygen( origin: OriginFor<T>, authority: T::DKGId ) -> DispatchResultWithPostInfo
Force removes an authority from keygen jail.
Can only be called by DKG
origin
- The account origin.authority
- The authority to be removed from the keygen jail.
sourcepub fn force_unjail_signing(
origin: OriginFor<T>,
authority: T::DKGId
) -> DispatchResultWithPostInfo
pub fn force_unjail_signing( origin: OriginFor<T>, authority: T::DKGId ) -> DispatchResultWithPostInfo
Force removes an authority from signing jail.
Can only be called by the root origin.
origin
- The account origin.authority
- The authority to be removed from the signing jail.
Forcefully rotate the DKG
This forces the next authorities into the current authority spot and
automatically increments the authority ID. It uses change_authorities
to execute the rotation forcefully.
sourcepub fn trigger_emergency_keygen(
origin: OriginFor<T>
) -> DispatchResultWithPostInfo
pub fn trigger_emergency_keygen( origin: OriginFor<T> ) -> DispatchResultWithPostInfo
Triggers an Emergency Keygen Protocol.
The keygen protocol will then be executed and the result will be stored in the off chain storage, which will be picked up by the on chain worker and stored on chain.
Note that, this will clear the next public key and its signature, if any.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn used_signatures(
) -> BoundedVec<BoundedVec<u8, T::MaxSignatureLength>, T::MaxSignatureLength>
pub fn used_signatures( ) -> BoundedVec<BoundedVec<u8, T::MaxSignatureLength>, T::MaxSignatureLength>
An auto-generated getter for UsedSignatures
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn refresh_nonce() -> u32
pub fn refresh_nonce() -> u32
An auto-generated getter for RefreshNonce
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn next_unsigned_at() -> BlockNumberFor<T>
pub fn next_unsigned_at() -> BlockNumberFor<T>
An auto-generated getter for NextUnsignedAt
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn refresh_in_progress() -> bool
pub fn refresh_in_progress() -> bool
An auto-generated getter for RefreshInProgress
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn should_execute_new_keygen() -> (bool, bool)
pub fn should_execute_new_keygen() -> (bool, bool)
An auto-generated getter for ShouldExecuteNewKeygen
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn should_submit_proposer_vote() -> bool
pub fn should_submit_proposer_vote() -> bool
An auto-generated getter for ShouldSubmitProposerVote
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn next_dkg_public_key(
) -> Option<(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)>
pub fn next_dkg_public_key( ) -> Option<(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)>
An auto-generated getter for NextDKGPublicKey
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn next_public_key_signature(
) -> Option<BoundedVec<u8, T::MaxSignatureLength>>
pub fn next_public_key_signature( ) -> Option<BoundedVec<u8, T::MaxSignatureLength>>
An auto-generated getter for NextPublicKeySignature
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn dkg_public_key() -> (AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)
pub fn dkg_public_key() -> (AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)
An auto-generated getter for DKGPublicKey
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn public_key_signature() -> BoundedVec<u8, T::MaxSignatureLength>
pub fn public_key_signature() -> BoundedVec<u8, T::MaxSignatureLength>
An auto-generated getter for DKGPublicKeySignature
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn previous_public_key(
) -> (AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)
pub fn previous_public_key( ) -> (AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>)
An auto-generated getter for PreviousPublicKey
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn historical_rounds<KArg>(
k: KArg
) -> RoundMetadata<T::MaxKeyLength, T::MaxSignatureLength>where
KArg: EncodeLike<AuthoritySetId>,
pub fn historical_rounds<KArg>( k: KArg ) -> RoundMetadata<T::MaxKeyLength, T::MaxSignatureLength>where KArg: EncodeLike<AuthoritySetId>,
An auto-generated getter for HistoricalRounds
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn signature_threshold() -> u16
pub fn signature_threshold() -> u16
An auto-generated getter for SignatureThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn keygen_threshold() -> u16
pub fn keygen_threshold() -> u16
An auto-generated getter for KeygenThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn next_signature_threshold() -> u16
pub fn next_signature_threshold() -> u16
An auto-generated getter for NextSignatureThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn next_keygen_threshold() -> u16
pub fn next_keygen_threshold() -> u16
An auto-generated getter for NextKeygenThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn pending_signature_threshold() -> u16
pub fn pending_signature_threshold() -> u16
An auto-generated getter for PendingSignatureThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn pending_keygen_threshold() -> u16
pub fn pending_keygen_threshold() -> u16
An auto-generated getter for PendingKeygenThreshold
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
An auto-generated getter for CurrentAuthoritiesAccounts
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn misbehaviour_reports<KArg>(
k: KArg
) -> Option<AggregatedMisbehaviourReports<T::DKGId, T::MaxSignatureLength, T::MaxReporters>>where
KArg: EncodeLike<(MisbehaviourType, AuthoritySetId, T::DKGId)>,
pub fn misbehaviour_reports<KArg>( k: KArg ) -> Option<AggregatedMisbehaviourReports<T::DKGId, T::MaxSignatureLength, T::MaxReporters>>where KArg: EncodeLike<(MisbehaviourType, AuthoritySetId, T::DKGId)>,
An auto-generated getter for MisbehaviourReports
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
An auto-generated getter for AuthorityReputations
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
An auto-generated getter for JailedKeygenAuthorities
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
An auto-generated getter for JailedSigningAuthorities
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn last_session_rotation_block() -> BlockNumberFor<T>
pub fn last_session_rotation_block() -> BlockNumberFor<T>
An auto-generated getter for LastSessionRotationBlock
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn pending_refresh_proposal() -> Option<RefreshProposal>
pub fn pending_refresh_proposal() -> Option<RefreshProposal>
An auto-generated getter for PendingRefreshProposal
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn current_refresh_proposal() -> Option<RefreshProposal>
pub fn current_refresh_proposal() -> Option<RefreshProposal>
An auto-generated getter for CurrentRefreshProposal
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
Return the current active DKG authority set.
Return the next DKG authority set.
pub fn update_signature_threshold( new_threshold: u16 ) -> DispatchResultWithPostInfo
pub fn update_keygen_threshold(new_threshold: u16) -> DispatchResultWithPostInfo
pub fn decompress_public_key( compressed: Vec<u8> ) -> Result<Vec<u8>, DispatchError>
pub fn do_refresh(pub_key: Vec<u8>)
pub fn create_refresh_proposal( pub_key: Vec<u8>, nonce: u32 ) -> Result<Proposal<T::MaxProposalLength>, DispatchError>
sourcepub fn pre_process_for_merkleize(voters: &[T::DKGId]) -> Vec<[u8; 32]>
pub fn pre_process_for_merkleize(voters: &[T::DKGId]) -> Vec<[u8; 32]>
Returns the leaves of the voter set merkle tree.
It is expected that the size of the returned vector is a power of 2.
sourcepub fn next_layer(curr_layer: Vec<[u8; 32]>) -> Vec<[u8; 32]>
pub fn next_layer(curr_layer: Vec<[u8; 32]>) -> Vec<[u8; 32]>
Computes the next layer of the merkle tree by hashing the previous layer.
pub fn get_voter_set_tree_height(voter_count: usize) -> u32
sourcepub fn get_voter_set_tree_root(voters: &[T::DKGId]) -> [u8; 32]
pub fn get_voter_set_tree_root(voters: &[T::DKGId]) -> [u8; 32]
Computes the merkle root of the voter set tree
pub fn process_public_key_submissions( aggregated_keys: AggregatedPublicKeys, authorities: Vec<T::DKGId> ) -> Result<BTreeMap<Vec<u8>, Vec<T::DKGId>>, DispatchError>
pub fn process_misbehaviour_reports( reports: AggregatedMisbehaviourReports<T::DKGId, T::MaxSignatureLength, T::MaxReporters>, verifying_set: Vec<T::DKGId> ) -> Vec<T::DKGId>
pub fn store_consensus_log( authority_ids: BoundedVec<T::DKGId, T::MaxAuthorities>, next_authority_ids: BoundedVec<T::DKGId, T::MaxAuthorities>, active_set_id: AuthoritySetId )
pub fn update_next_keygen_threshold(next_threshold: u16)
pub fn update_pending_keygen_threshold(next_threshold: u16)
pub fn update_next_signature_threshold(next_threshold: u16)
pub fn should_refresh(_now: BlockNumberFor<T>) -> bool
sourcepub fn insert_historical_refresh(
dkg_pub_key: &(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>),
next_pub_key: &(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>),
next_pub_key_signature: BoundedVec<u8, T::MaxSignatureLength>
)
pub fn insert_historical_refresh( dkg_pub_key: &(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>), next_pub_key: &(AuthoritySetId, BoundedVec<u8, T::MaxKeyLength>), next_pub_key_signature: BoundedVec<u8, T::MaxSignatureLength> )
Inserts a successful rotation into the history
Insert historical round metadata consisting of the current round’s public key before rotation, the next round’s public key, and the refresh signature signed by the current key refreshing the next.
Trait Implementations§
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
§type CurrentStorageVersion = NoStorageVersionSet
type CurrentStorageVersion = NoStorageVersionSet
source§fn current_storage_version() -> Self::CurrentStorageVersion
fn current_storage_version() -> Self::CurrentStorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn offchain_worker(block_number: BlockNumberFor<T>)
fn offchain_worker(block_number: BlockNumberFor<T>)
source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
Hooks::on_finalize
]). Read more§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
§fn integrity_test()
fn integrity_test()
source§impl<T: Config> IntegrityTest for Pallet<T>
impl<T: Config> IntegrityTest for Pallet<T>
source§fn integrity_test()
fn integrity_test()
Hooks::integrity_test
].source§impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
source§impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn on_finalize(n: BlockNumberFor<T>)
fn on_finalize(n: BlockNumberFor<T>)
Hooks::on_finalize
].source§impl<T: Config> OnGenesis for Pallet<T>
impl<T: Config> OnGenesis for Pallet<T>
source§fn on_genesis()
fn on_genesis()
source§impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
Hooks::on_initialize
].source§impl<T: Config> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Hooks::on_runtime_upgrade
].source§impl<T: Config> OnSignedProposal<<T as Config>::MaxProposalLength> for Pallet<T>
impl<T: Config> OnSignedProposal<<T as Config>::MaxProposalLength> for Pallet<T>
source§fn on_signed_proposal(
proposal: Proposal<T::MaxProposalLength>
) -> Result<(), DispatchError>
fn on_signed_proposal( proposal: Proposal<T::MaxProposalLength> ) -> Result<(), DispatchError>
()
and otherwise an error of type E
. Read moresource§impl<T: Config> OneSessionHandler<<T as Config>::AccountId> for Pallet<T>
impl<T: Config> OneSessionHandler<<T as Config>::AccountId> for Pallet<T>
source§fn on_genesis_session<'a, I>(validators: I)where
I: Iterator<Item = (&'a T::AccountId, T::DKGId)> + 'a,
fn on_genesis_session<'a, I>(validators: I)where I: Iterator<Item = (&'a T::AccountId, T::DKGId)> + 'a,
on_new_session
should provide the same validator set.source§fn on_new_session<'a, I>(_changed: bool, validators: I, queued_validators: I)where
I: Iterator<Item = (&'a T::AccountId, T::DKGId)> + 'a,
fn on_new_session<'a, I>(_changed: bool, validators: I, queued_validators: I)where I: Iterator<Item = (&'a T::AccountId, T::DKGId)> + 'a,
source§fn on_disabled(i: u32)
fn on_disabled(i: u32)
§fn on_before_session_ending()
fn on_before_session_ending()
source§impl<T: Config> PalletInfoAccess for Pallet<T>
impl<T: Config> PalletInfoAccess for Pallet<T>
source§fn module_name() -> &'static str
fn module_name() -> &'static str
source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
source§impl<T> PartialEq<Pallet<T>> for Pallet<T>
impl<T> PartialEq<Pallet<T>> for Pallet<T>
source§impl<T: Config> ValidateUnsigned for Pallet<T>
impl<T: Config> ValidateUnsigned for Pallet<T>
source§fn validate_unsigned(
source: TransactionSource,
call: &Self::Call
) -> TransactionValidity
fn validate_unsigned( source: TransactionSource, call: &Self::Call ) -> TransactionValidity
Validate unsigned call to this module.
By default unsigned transactions are disallowed, but implementing the validator here we make sure that some particular calls (the ones produced by offchain worker) are being whitelisted and marked as valid.
§fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
source§impl<T: Config> WhitelistedStorageKeys for Pallet<T>
impl<T: Config> WhitelistedStorageKeys for Pallet<T>
source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
Vec<TrackedStorageKey>
indicating the storage keys that
should be whitelisted during benchmarking. This means that those keys
will be excluded from the benchmarking performance calculation.impl<T> Eq for Pallet<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Pallet<T>where T: RefUnwindSafe,
impl<T> Send for Pallet<T>where T: Send,
impl<T> Sync for Pallet<T>where T: Sync,
impl<T> Unpin for Pallet<T>where T: Unpin,
impl<T> UnwindSafe for Pallet<T>where 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>,
§impl<T> Conv for T
impl<T> Conv for T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
§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>
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§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 more§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 more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§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> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§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.§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.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§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 Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.