key-rwlock 0.1.1

Simple library for keyed asynchronous reader-writer locks
Documentation
[![check](https://github.com/Defelo/key-rwlock/actions/workflows/check.yml/badge.svg)](https://github.com/Defelo/key-rwlock/actions/workflows/check.yml)
[![test](https://github.com/Defelo/key-rwlock/actions/workflows/test.yml/badge.svg)](https://github.com/Defelo/key-rwlock/actions/workflows/test.yml)
[![codecov](https://codecov.io/gh/Defelo/key-rwlock/branch/develop/graph/badge.svg?token=D88MHBLVE1)](https://codecov.io/gh/Defelo/key-rwlock)
![Version](https://img.shields.io/github/v/tag/Defelo/key-rwlock?include_prereleases&label=version)
[![dependency status](https://deps.rs/repo/github/Defelo/key-rwlock/status.svg)](https://deps.rs/repo/github/Defelo/key-rwlock)

# key-rwlock
Simple library for keyed asynchronous reader-writer locks.

## Example
```rust
use key_rwlock::KeyRwLock;

#[tokio::main]
async fn main() {
    let lock = KeyRwLock::new();

    let _foo = lock.write("foo").await;
    let _bar = lock.read("bar").await;

    assert!(lock.try_read("foo").await.is_err());
    assert!(lock.try_write("foo").await.is_err());

    assert!(lock.try_read("bar").await.is_ok());
    assert!(lock.try_write("bar").await.is_err());
}
```