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>
impl<'a, S, C> Permit<'a, S, C>
Sourcepub fn out_of_thin_air(sem: &'a Semaphore<S, C>, permit: S::Permit) -> Self
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.
Sourcepub fn into_owned_permit(self, sem: Arc<Semaphore<S, C>>) -> OwnedPermit<S, C>
pub fn into_owned_permit(self, sem: Arc<Semaphore<S, C>>) -> OwnedPermit<S, C>
Upgrade this permit into an OwnedPermit.
Trait Implementations§
Auto Trait Implementations§
impl<'a, S, C> Freeze for Permit<'a, S, C>
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>
impl<'a, S, C = Uncloseable> !UnwindSafe for Permit<'a, S, C>
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
Mutably borrows from an owned value. Read more