Struct SemaphorePermit
#[must_use]
pub struct SemaphorePermit<'a> { /* private fields */ }
A permit from the semaphore.
This type is created by the acquire method.
Implementations
impl<'a> SemaphorePermit<'a>
fn forget(self)Forgets the permit without releasing it back to the semaphore. This can be used to reduce the amount of permits available from a semaphore.
Examples
use Arc; use Semaphore; let sem = new; // Since we forgot the permit, available permits won't go back to its initial value // even after the permit is dropped. assert_eq!;fn merge(&mut self, other: Self)Merge two
SemaphorePermitinstances together, consumingotherwithout releasing the permits it holds.Permits held by both
selfandotherare released whenselfdrops.Panics
This function panics if permits from different
Semaphoreinstances are merged.Examples
use Arc; use Semaphore; let sem = new; let mut permit = sem.try_acquire.unwrap; for _ in 0..9 assert_eq!; // Release all permits in a single batch. drop; assert_eq!;fn split(&mut self, n: usize) -> Option<Self>Splits
npermits fromselfand returns a newSemaphorePermitinstance that holdsnpermits.If there are insufficient permits and it's not possible to reduce by
n, returnsNone.Examples
use Arc; use Semaphore; let sem = new; let mut p1 = sem.try_acquire_many.unwrap; let p2 = p1.split.unwrap; assert_eq!; assert_eq!;fn num_permits(&self) -> usizeReturns the number of permits held by
self.
Trait Implementations
impl Drop for SemaphorePermit<'_>
fn drop(&mut self)
impl<'a> Debug for SemaphorePermit<'a>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl<'a> !RefUnwindSafe for SemaphorePermit<'a>
impl<'a> !UnwindSafe for SemaphorePermit<'a>
impl<'a> Freeze for SemaphorePermit<'a>
impl<'a> Send for SemaphorePermit<'a>
impl<'a> Sync for SemaphorePermit<'a>
impl<'a> Unpin for SemaphorePermit<'a>
impl<'a> UnsafeUnpin for SemaphorePermit<'a>
Blanket Implementations
impl<T> Any for SemaphorePermit<'a>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for SemaphorePermit<'a>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for SemaphorePermit<'a>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for SemaphorePermit<'a>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for SemaphorePermit<'a>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for SemaphorePermit<'a>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for SemaphorePermit<'a>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>