priority_semaphore/
error.rs

1//! Error types.
2
3/// Returned by `try_acquire` when no permits are immediately available.
4#[derive(Debug, Clone, Copy)]
5pub enum TryAcquireError {
6    /// All permits are currently in use.
7    NoPermits,
8    /// Semaphore has been closed.
9    Closed,
10}
11
12impl core::fmt::Display for TryAcquireError {
13    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14        match self {
15            TryAcquireError::NoPermits => write!(f, "no permits available"),
16            TryAcquireError::Closed => write!(f, "semaphore closed"),
17        }
18    }
19}
20
21#[cfg(feature = "std")]
22impl std::error::Error for TryAcquireError {}
23
24/// Returned by async `acquire`.
25#[derive(Debug)]
26pub enum AcquireError {
27    /// Semaphore was closed before acquisition succeeded.
28    Closed,
29}
30
31impl core::fmt::Display for AcquireError {
32    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
33        match self {
34            AcquireError::Closed => write!(f, "semaphore closed"),
35        }
36    }
37}
38
39#[cfg(feature = "std")]
40impl std::error::Error for AcquireError {}