Permit

Struct Permit 

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

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

Implementations§

Source§

impl<'a, S, C> Permit<'a, S, C>

Source

pub fn out_of_thin_air(sem: &'a 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) -> &'a 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.

Source

pub fn into_owned_permit(self, sem: Arc<Semaphore<S, C>>) -> OwnedPermit<S, C>

Upgrade this permit into an OwnedPermit.

Trait Implementations§

Source§

impl<S, C> Debug for Permit<'_, 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 Permit<'_, 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 Permit<'_, S, C>

Source§

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

Mutably dereferences the value.

Auto Trait Implementations§

§

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

§

impl<'a, S, C = Uncloseable> !RefUnwindSafe for Permit<'a, S, C>

§

impl<'a, S, C> Send for Permit<'a, 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<'a, S, C> Sync for Permit<'a, 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<'a, S, C> Unpin for Permit<'a, S, C>
where <S as SemaphoreState>::Permit: Unpin, S: ?Sized,

§

impl<'a, S, C = Uncloseable> !UnwindSafe for Permit<'a, 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.