Crates.io | key-lock |
lib.rs | key-lock |
version | 0.1.0 |
source | src |
created_at | 2022-12-22 10:21:37.518393 |
updated_at | 2022-12-22 10:21:37.518393 |
description | Library for mutual exclusion by keys. |
homepage | https://github.com/FlixCoder/key-lock |
repository | https://github.com/FlixCoder/key-lock |
max_upload_size | |
id | 743807 |
size | 12,036 |
Simple library for mutual exclusion based on keys. Lock and wait for execution by key.
Import the project using:
cargo add key-lock
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());
}
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
.