pub struct Semaphore { /* private fields */ }
Expand description

An unsynchronized (!Sync), simple semaphore for asynchronous permit acquisition.

Implementations§

source§

impl Semaphore

source

pub const fn new(permits: usize) -> Self

Creates a new semaphore with the initial number of permits.

source

pub fn close(&self) -> usize

Closes the semaphore and returns the number of notified pending waiters.

This prevents the semaphore from issuing new permits and notifies all pending waiters.

source

pub fn is_closed(&self) -> bool

Returns true if the semaphore has been closed

source

pub fn waiters(&self) -> usize

Returns the number of currently registered Futures waiting for a Permit.

source

pub fn available_permits(&self) -> usize

Returns the current number of available permits.

source

pub fn outstanding_permits(&self) -> usize

Returns the current number of handed out permits.

source

pub fn add_permits(&self, n: usize)

Adds n new permits to the semaphore.

source

pub fn remove_permits(&self, n: usize)

Permanently reduces the number of available permits by n.

source

pub fn try_acquire(&self) -> Result<Permit<'_>, TryAcquireError>

Acquires a single Permit or returns an error, if there are no available permits.

Errors

Fails, if the semaphore has been closed or has no available permits.

source

pub fn try_acquire_many(&self, n: usize) -> Result<Permit<'_>, TryAcquireError>

Acquires n Permits or returns an error, if there are not enough available permits.

Errors

Fails, if the semaphore has been closed or has not enough available permits.

source

pub async fn acquire(&self) -> Result<Permit<'_>, AcquireError>

Acquires a single Permit, potentially blocking until one becomes available.

Errors

Fails, if the semaphore has been closed.

source

pub async fn acquire_many(&self, n: usize) -> Result<Permit<'_>, AcquireError>

Acquires n Permits, potentially blocking until they become available.

Errors

Fails, if the semaphore has been closed.

Trait Implementations§

source§

impl Debug for Semaphore

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.