key-lock 0.1.0

Library for mutual exclusion by keys.
Documentation
use key_lock::KeyLock;

#[test]
#[ntest::timeout(1000)]
fn basic() {
	let lock = KeyLock::new();
	let _a = lock.blocking_lock("a");
	let _b = lock.blocking_lock("b");
	assert!(lock.blocking_try_lock("a").is_err());
	assert!(lock.blocking_try_lock("c").is_ok());
}

#[tokio::test]
#[ntest::timeout(1000)]
async fn basic_async() {
	let lock = KeyLock::new();
	let _a = lock.lock("a").await;
	let _b = lock.lock("b").await;
	assert!(lock.try_lock("a").await.is_err());
	assert!(lock.try_lock("c").await.is_ok());
}

#[test]
#[ntest::timeout(1000)]
fn clean_up() {
	let lock = KeyLock::new();
	let _a = lock.blocking_lock("a");
	lock.blocking_clean();
	assert!(lock.blocking_try_lock("a").is_err());
}

#[tokio::test]
#[ntest::timeout(1000)]
async fn clean_up_async() {
	let lock = KeyLock::new();
	let _a = lock.lock("a").await;
	lock.clean().await;
	assert!(lock.try_lock("a").await.is_err());
}