1 unstable release
0.1.0 | Dec 22, 2022 |
---|
#1200 in Concurrency
69 downloads per month
7KB
105 lines
KeyLock
Simple library for mutual exclusion based on keys. Lock and wait for execution by key.
Usage
Import the project using:
cargo add key-lock
Example
use key_lock::KeyLock;
#[tokio::main]
async fn main() {
// Initialize new lock.
let lock = KeyLock::new();
// Lock A, continues immediately.
let _a = lock.lock("a").await;
// Lock B, continues immediately.
let _b = lock.lock("b").await;
// Try to lock A, but it is already locked. Normal locking would block here.
assert!(lock.try_lock("a").await.is_err());
}
Lints
This projects uses a bunch of clippy lints for higher code quality and style.
Install cargo-lints
using cargo install --git https://github.com/FlixCoder/cargo-lints
. The lints are defined in lints.toml
and can be checked by running cargo lints clippy --all-targets --workspace
.
Dependencies
~2–3MB
~47K SLoC