Skip to main content

GuardWithDeferredDrop

Struct GuardWithDeferredDrop 

Source
pub(super) struct GuardWithDeferredDrop<'m> {
    guard: Option<MutexGuard<'m, State>>,
    deferred_drop: Vec<ProtectedArc<dyn IsParticipant>>,
}
Expand description

MutexGuard<State> but also a list of Arc<dyn Participant> to drop when we unlock

Fields§

§guard: Option<MutexGuard<'m, State>>

The mutex guard

Always Some; just an Option so we can move out during drop

§deferred_drop: Vec<ProtectedArc<dyn IsParticipant>>

The participants we’ve acquired and which we want to drop later

Implementations§

Source§

impl<'m> GuardWithDeferredDrop<'m>

Source

pub(super) fn new(guard: MutexGuard<'m, State>) -> Self

Prepare for handling deferred drops

Source

pub(super) fn deref_mut_both( &mut self, ) -> (&mut State, &mut Vec<ProtectedArc<dyn IsParticipant>>)

Obtain mutable borrows of the two components

Methods from Deref<Target = State>§

Source

fn get_aid_and_children_recursively(&self, parent_aid: AId) -> HashSet<AId>

Obtain all of the descendants of parent_aid according to the Child relation

The returned HashSet includes parent_aid, its children, their children, and so on.

Used in the reclamation algorithm in reclaim.

Source

fn prepare_parent_aid(&mut self, parent: &Account) -> Result<AId>

Find and check the requested parent’s account ID

This function is responsible for garbage collecting dead children from parent’s children. On successful return, a new child can be added without extending children.

This is called in preparation for adding another account to parent’s list of child accounts.

Returns an error if the specified parent account is not enabled, or if it has been torn down.

Trait Implementations§

Source§

impl<'m> Debug for GuardWithDeferredDrop<'m>

Source§

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

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

impl<'m> Default for GuardWithDeferredDrop<'m>

Source§

fn default() -> GuardWithDeferredDrop<'m>

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

impl Deref for GuardWithDeferredDrop<'_>

Source§

type Target = State

The resulting type after dereferencing.
Source§

fn deref(&self) -> &State

Dereferences the value.
Source§

impl DerefMut for GuardWithDeferredDrop<'_>

Source§

fn deref_mut(&mut self) -> &mut State

Mutably dereferences the value.
Source§

impl Drop for GuardWithDeferredDrop<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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.

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

impl<T> PossiblyOption<T> for T

Source§

fn to_option(self) -> Option<T>

Convert this object into an Option<T>
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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