pub struct OwnedPermit<Lock = Spinlock>
where Lock: RawMutex,
{ /* private fields */ }
Available on crate feature alloc only.
Expand description

An owned RAII guard representing one or more permits acquired from a Semaphore.

When the OwnedPermit is dropped, the permits it represents are released back to the Semaphore, potentially waking another task.

This type is identical to the Permit type, except that it holds an Arc clone of the Semaphore, rather than borrowing it. This allows the guard to be valid for the 'static lifetime.

This type is returned by the Semaphore::acquire_owned and Semaphore::try_acquire_owned methods.

Implementations§

§

impl<Lock> OwnedPermit<Lock>
where Lock: RawMutex,

pub fn forget(self)

Forget this permit, dropping it without returning the number of acquired permits to the semaphore.

This permanently decreases the number of permits in the semaphore by self.permits().

pub fn permits(&self) -> usize

Returns the count of semaphore permits owned by this OwnedPermit.

Trait Implementations§

§

impl<Lock> Debug for OwnedPermit<Lock>
where Lock: Debug + RawMutex,

§

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

Formats the value using the given formatter. Read more
§

impl<Lock> Drop for OwnedPermit<Lock>
where Lock: RawMutex,

§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<Lock = Spinlock> !RefUnwindSafe for OwnedPermit<Lock>

§

impl<Lock> Send for OwnedPermit<Lock>
where Lock: Sync + Send,

§

impl<Lock> Sync for OwnedPermit<Lock>
where Lock: Sync + Send,

§

impl<Lock> Unpin for OwnedPermit<Lock>

§

impl<Lock = Spinlock> !UnwindSafe for OwnedPermit<Lock>

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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
§

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.

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