OwnedPermit

Struct OwnedPermit 

Source
pub struct OwnedPermit<S, C = Uncloseable>{ /* private fields */ }
Expand description

The drop-guard for owned semaphore permits. Will ensure the permit is released when dropped.

Implementations§

Source§

impl<S, C> OwnedPermit<S, C>

Source

pub fn out_of_thin_air(sem: Arc<Semaphore<S, C>>, permit: S::Permit) -> Self

Construct a new permit out of thin air, no waiting is required.

This can violate the purpose of the semaphore, but is provided for convenience. It can be used to introduce new permits to the semaphore if desired, or it can be paired with Permit::take for niche use-cases where the semaphore lifetime gets in the way.

Source

pub fn semaphore(this: &Self) -> &Arc<Semaphore<S, C>>

Get access to the associated semaphore

Source

pub fn take(this: Self) -> S::Permit

Do not release the permit to the semaphore.

Trait Implementations§

Source§

impl<S, C> Debug for OwnedPermit<S, C>

Source§

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

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

impl<S, C> Deref for OwnedPermit<S, C>

Source§

type Target = <S as SemaphoreState>::Permit

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<S, C> DerefMut for OwnedPermit<S, C>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

§

impl<S, C> Freeze for OwnedPermit<S, C>
where <S as SemaphoreState>::Permit: Freeze, S: ?Sized,

§

impl<S, C = Uncloseable> !RefUnwindSafe for OwnedPermit<S, C>

§

impl<S, C> Send for OwnedPermit<S, C>
where <S as SemaphoreState>::Permit: Send, S: Send + ?Sized, <C as Sealed>::Closed<()>: Send, <C as Sealed>::Closed<Option<<S as SemaphoreState>::Params>>: Send, <S as SemaphoreState>::Params: Send,

§

impl<S, C> Sync for OwnedPermit<S, C>
where <S as SemaphoreState>::Permit: Sync + Send, S: Send + ?Sized, <C as Sealed>::Closed<()>: Send, <C as Sealed>::Closed<Option<<S as SemaphoreState>::Params>>: Send, <S as SemaphoreState>::Params: Send,

§

impl<S, C> Unpin for OwnedPermit<S, C>
where <S as SemaphoreState>::Permit: Unpin, S: ?Sized,

§

impl<S, C = Uncloseable> !UnwindSafe for OwnedPermit<S, C>

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.

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