Struct OwnedSemaphorePermit
#[must_use]
pub struct OwnedSemaphorePermit { /* private fields */ }
An owned permit from the semaphore.
This type is created by the acquire_owned method.
Implementations
impl OwnedSemaphorePermit
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
OwnedSemaphorePermitinstances 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.clone.try_acquire_owned.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 newOwnedSemaphorePermitinstance that holdsnpermits.If there are insufficient permits and it's not possible to reduce by
n, returnsNone.Note
It will clone the owned
Arc<Semaphore>to construct the new instance.Examples
use Arc; use Semaphore; let sem = new; let mut p1 = sem.try_acquire_many_owned.unwrap; let p2 = p1.split.unwrap; assert_eq!; assert_eq!;fn semaphore(&self) -> &Arc<Semaphore>Returns the
Semaphorefrom which this permit was acquired.fn num_permits(&self) -> usizeReturns the number of permits held by
self.
Trait Implementations
impl Debug for OwnedSemaphorePermit
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Drop for OwnedSemaphorePermit
fn drop(&mut self)
Auto Trait Implementations
impl !RefUnwindSafe for OwnedSemaphorePermit
impl !UnwindSafe for OwnedSemaphorePermit
impl Freeze for OwnedSemaphorePermit
impl Send for OwnedSemaphorePermit
impl Sync for OwnedSemaphorePermit
impl Unpin for OwnedSemaphorePermit
impl UnsafeUnpin for OwnedSemaphorePermit
Blanket Implementations
impl<T> Any for OwnedSemaphorePermit
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for OwnedSemaphorePermit
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for OwnedSemaphorePermit
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for OwnedSemaphorePermit
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for OwnedSemaphorePermit
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 OwnedSemaphorePermit
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for OwnedSemaphorePermit
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>