#lock #key #mutual #exclusion #locking

key-lock

Library for mutual exclusion by keys

1 unstable release

0.1.0 Dec 22, 2022

#1129 in Concurrency

Download history 238/week @ 2023-12-14 229/week @ 2023-12-21 129/week @ 2023-12-28 248/week @ 2024-01-04 242/week @ 2024-01-11 303/week @ 2024-01-18 282/week @ 2024-01-25 261/week @ 2024-02-01 202/week @ 2024-02-08 235/week @ 2024-02-15 193/week @ 2024-02-22 194/week @ 2024-02-29 183/week @ 2024-03-07 161/week @ 2024-03-14 25/week @ 2024-03-21 19/week @ 2024-03-28

410 downloads per month

MIT license

7KB
105 lines

KeyLock

crates.io page docs.rs page license: MIT

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
~46K SLoC