Struct delegation::pallet::Pallet
source · pub struct Pallet<T>(/* private fields */);
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 create_hierarchy(
origin: OriginFor<T>,
root_node_id: DelegationNodeIdOf<T>,
ctype_hash: CtypeHashOf<T>
) -> DispatchResult
pub fn create_hierarchy( origin: OriginFor<T>, root_node_id: DelegationNodeIdOf<T>, ctype_hash: CtypeHashOf<T> ) -> DispatchResult
Create a new delegation root associated with a given CType hash.
The new root will allow a new trust hierarchy to be created by adding children delegations to the root.
There must be no delegation with the same ID stored on chain, while there must be already a CType with the given hash stored in the CType pallet.
The dispatch origin must be split into
- a submitter of type
AccountId
who is responsible for paying the transaction fee and - a DID subject of type
DelegationEntityId
who creates, owns and can revoke the delegation.
Requires the sender of the transaction to have a reservable balance
of at least Deposit
many tokens.
Emits RootCreated
.
Weight: O(1)
- Reads: [Origin Account], Roots, CTypes
- Writes: Roots
sourcepub fn add_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
parent_id: DelegationNodeIdOf<T>,
delegate: DelegatorIdOf<T>,
permissions: Permissions,
delegate_signature: DelegateSignatureTypeOf<T>
) -> DispatchResult
pub fn add_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, parent_id: DelegationNodeIdOf<T>, delegate: DelegatorIdOf<T>, permissions: Permissions, delegate_signature: DelegateSignatureTypeOf<T> ) -> DispatchResult
Create a new delegation node.
The new delegation node represents a new trust hierarchy that considers the new node as its root. The owner of this node has full control over any of its direct and indirect descendants.
For the creation to succeed, the delegatee must provide a valid signature over the (blake256) hash of the creation operation details which include (in order) delegation id, root node id, parent id, and permissions of the new node.
There must be no delegation with the same id stored on chain. Furthermore, the referenced root and parent nodes must already be present on chain and contain the valid permissions and revocation status (i.e., not revoked).
The dispatch origin must be split into
- a submitter of type
AccountId
who is responsible for paying the transaction fee and - a DID subject of type
DelegationEntityId
who creates, owns and can revoke the delegation.
Requires the sender of the transaction to have a reservable balance
of at least Deposit
many tokens.
Emits DelegationCreated
.
Weight: O(1)
- Reads: [Origin Account], Roots, Delegations
- Writes: Delegations
sourcepub fn revoke_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_parent_checks: u32,
max_revocations: u32
) -> DispatchResultWithPostInfo
pub fn revoke_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_parent_checks: u32, max_revocations: u32 ) -> DispatchResultWithPostInfo
Revoke a delegation node (potentially a root node) and all its children.
Does not refund the delegation back to the deposit owner as the
node is still stored on chain. Requires to additionally call
remove_delegation
to unreserve the deposit.
Revoking a delegation node results in the trust hierarchy starting from the given node being revoked. Nevertheless, revocation starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is revoked, the trust hierarchy with the node as root is to be considered revoked.
The dispatch origin must be split into
- a submitter of type
AccountId
who is responsible for paying the transaction fee and - a DID subject of type
DelegationEntityId
who creates, owns and can revoke the delegation.
Emits C * DelegationRevoked
.
Weight: O(C) where C is the number of children of the delegation
node which is bounded by max_children
.
- Reads: [Origin Account], Roots, C * Delegations, C * Children.
- Writes: Roots, C * Delegations
sourcepub fn remove_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_removals: u32
) -> DispatchResultWithPostInfo
pub fn remove_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_removals: u32 ) -> DispatchResultWithPostInfo
Remove a delegation node (potentially a root node) and all its children.
Returns the delegation deposit to the deposit owner for each removed DelegationNode by unreserving it.
Removing a delegation node results in the trust hierarchy starting from the given node being removed. Nevertheless, removal starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is removed, the trust hierarchy with the node as root is to be considered removed.
The dispatch origin must be split into
- a submitter of type
AccountId
who is responsible for paying the transaction fee and - a DID subject of type
DelegationEntityId
who creates, owns and can revoke the delegation.
Emits C * DelegationRemoved
.
Weight: O(C) where C is the number of children of the delegation
node which is bounded by max_children
.
- Reads: [Origin Account], Roots, C * Delegations, C * Children.
- Writes: Roots, 2 * C * Delegations
sourcepub fn reclaim_deposit(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_removals: u32
) -> DispatchResultWithPostInfo
pub fn reclaim_deposit( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_removals: u32 ) -> DispatchResultWithPostInfo
Reclaim the deposit for a delegation node (potentially a root node), removing the node and all its children.
Returns the delegation deposit to the deposit owner for each removed DelegationNode by unreserving it.
Removing a delegation node results in the trust hierarchy starting from the given node being removed. Nevertheless, removal starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is removed, the trust hierarchy with the node as root is to be considered removed.
The dispatch origin must be signed by the delegation deposit owner.
DepositReclaimed
.
Weight: O(C) where C is the number of children of the delegation
node which is bounded by max_removals
.
- Reads: [Origin Account], Roots, C * Delegations, C * Children.
- Writes: Roots, 2 * C * Delegations
sourcepub fn change_deposit_owner(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>
) -> DispatchResult
pub fn change_deposit_owner( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T> ) -> DispatchResult
Changes the deposit owner.
The balance that is reserved by the current deposit owner will be freed and balance of the new deposit owner will get reserved.
The subject of the call must be the owner of the delegation node. The sender of the call will be the new deposit owner.
sourcepub fn update_deposit(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>
) -> DispatchResult
pub fn update_deposit( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T> ) -> DispatchResult
Updates the deposit amount to the current deposit rate.
The sender must be the deposit owner.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn calculate_delegation_creation_hash(
delegation_id: &DelegationNodeIdOf<T>,
root_id: &DelegationNodeIdOf<T>,
parent_id: &DelegationNodeIdOf<T>,
permissions: &Permissions
) -> T::Hash
pub fn calculate_delegation_creation_hash( delegation_id: &DelegationNodeIdOf<T>, root_id: &DelegationNodeIdOf<T>, parent_id: &DelegationNodeIdOf<T>, permissions: &Permissions ) -> T::Hash
sourcepub fn is_delegating(
identity: &DelegatorIdOf<T>,
delegation: &DelegationNodeIdOf<T>,
max_parent_checks: u32
) -> Result<(bool, u32), DispatchError>
pub fn is_delegating( identity: &DelegatorIdOf<T>, delegation: &DelegationNodeIdOf<T>, max_parent_checks: u32 ) -> Result<(bool, u32), DispatchError>
Check if an identity is the owner of the given delegation node or any node up the hierarchy, and if the delegation has not been yet revoked.
It checks whether the conditions are required for the given node,
otherwise it goes up up to max_parent_checks
nodes, including the
root node, to check whether the given identity is a valid delegator
of the given delegation.
Weight: O(P) where P is the number of steps required to verify that
the dispatch Origin controls the delegation entitled to revoke the
attestation. It is bounded by max_parent_checks
.
- Reads: Roots, P * Delegations
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn delegation_nodes<KArg>(k: KArg) -> Option<DelegationNodeOf<T>>where
KArg: EncodeLike<DelegationNodeIdOf<T>>,
pub fn delegation_nodes<KArg>(k: KArg) -> Option<DelegationNodeOf<T>>where KArg: EncodeLike<DelegationNodeIdOf<T>>,
An auto-generated getter for DelegationNodes
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn delegation_hierarchies<KArg>(
k: KArg
) -> Option<DelegationHierarchyDetails<CtypeHashOf<T>>>where
KArg: EncodeLike<DelegationNodeIdOf<T>>,
pub fn delegation_hierarchies<KArg>( k: KArg ) -> Option<DelegationHierarchyDetails<CtypeHashOf<T>>>where KArg: EncodeLike<DelegationNodeIdOf<T>>,
An auto-generated getter for DelegationHierarchies
.
Trait Implementations§
source§impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>
impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>
source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
source§impl<T> Benchmarking for Pallet<T>where
T: Config + Debug + Config,
T::DelegationNodeId: From<T::Hash>,
T::DelegationEntityId: From<Public>,
<T as Config>::CtypeCreatorId: From<T::DelegationEntityId>,
<<T as Config>::DelegationSignatureVerification as VerifySignature>::Signature: From<(T::DelegationEntityId, <<T as Config>::DelegationSignatureVerification as VerifySignature>::Payload)>,
<T as Config>::EnsureOrigin: GenerateBenchmarkOrigin<T::RuntimeOrigin, T::AccountId, T::DelegationEntityId>,
BlockNumberFor<T>: From<u64>,
<T as Config>::Currency: Mutate<T::AccountId>,
impl<T> Benchmarking for Pallet<T>where T: Config + Debug + Config, T::DelegationNodeId: From<T::Hash>, T::DelegationEntityId: From<Public>, <T as Config>::CtypeCreatorId: From<T::DelegationEntityId>, <<T as Config>::DelegationSignatureVerification as VerifySignature>::Signature: From<(T::DelegationEntityId, <<T as Config>::DelegationSignatureVerification as VerifySignature>::Payload)>, <T as Config>::EnsureOrigin: GenerateBenchmarkOrigin<T::RuntimeOrigin, T::AccountId, T::DelegationEntityId>, BlockNumberFor<T>: From<u64>, <T as Config>::Currency: Mutate<T::AccountId>,
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
§type CurrentStorageVersion = StorageVersion
type CurrentStorageVersion = StorageVersion
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 try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError>
fn try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError>
§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> 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 pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
§fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
§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
].§fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
pre_upgrade
->
on_runtime_upgrade
-> post_upgrade
hooks for a migration. Read moresource§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> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
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<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>
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>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where F: FnOnce(&Self) -> bool,
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> 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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.§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
.