[]Struct smol::lock::Semaphore

pub struct Semaphore { /* fields omitted */ }

A counter for limiting the number of concurrent operations.

Implementations

impl Semaphore

pub fn new(n: usize) -> Semaphore

Creates a new semaphore with a limit of n concurrent operations.

Examples

use async_semaphore::Semaphore;

let s = Semaphore::new(5);

pub fn try_acquire(&self) -> Option<SemaphoreGuard<'_>>

Attempts to get the permit for a concurrent operation.

Examples

use async_semaphore::Semaphore;

let s = Semaphore::new(2);

let g1 = s.try_acquire().unwrap();
let g2 = s.try_acquire().unwrap();

assert!(s.try_acquire().is_none());
drop(g2);
assert!(s.try_acquire().is_some());

pub async fn acquire(&'_ self) -> SemaphoreGuard<'_>

Waits for the permit for a concurrent operation.

Examples

use async_semaphore::Semaphore;

let s = Semaphore::new(2);
let guard = s.acquire().await;

Trait Implementations

impl Debug for Semaphore

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.