Expand description
§ranked-semaphore
A priority-aware semaphore for async Rust.
§Features
- Priority scheduling: Configurable priority-based task ordering
- No runtime dependency: Works with any async runtime (Tokio, async-std, smol, etc.)
- Flexible queue strategies: FIFO/LIFO and custom strategy
§Quick Start
use ranked_semaphore::RankedSemaphore;
#[tokio::main]
async fn main() {
// Create a semaphore with 3 permits, FIFO strategy
let sem = RankedSemaphore::new_fifo(3);
// Acquire a permit (default priority)
let permit = sem.acquire().await.unwrap();
// Acquire with custom priority
let high = sem.acquire_with_priority(10).await.unwrap();
// Release permits automatically on drop
drop(permit);
drop(high);
}
§Advanced Usage
Use PriorityConfig
and QueueStrategy
for fine-grained control:
use ranked_semaphore::{RankedSemaphore, PriorityConfig, QueueStrategy};
use std::sync::Arc;
#[tokio::main]
async fn main() {
let config = PriorityConfig::new()
.default_strategy(QueueStrategy::Fifo)
.exact(10, QueueStrategy::Lifo);
let limiter = Arc::new(RankedSemaphore::new_with_config(2, config));
let _admin = limiter.acquire_with_priority(10).await.unwrap();
let _guest = limiter.acquire_with_priority(0).await.unwrap();
}
Structs§
- Acquire
- Acquire operation Future
- Acquire
Error - Error returned from acquire operations when the semaphore has been closed.
- Acquire
Owned - Owned acquire operation Future
- Owned
Ranked Semaphore Permit - Semaphore permit (owned version)
- Priority
Config - Configuration for priority-based queue strategies.
- Ranked
Semaphore - High-performance priority semaphore
- Ranked
Semaphore Permit - Semaphore permit (borrowed version)
Enums§
- Queue
Strategy - Queue strategy for waiters at a given priority level.
- TryAcquire
Error - Error returned from try_acquire operations.