Locker

Utility locker - simple async/sync locker for rust concurrency.

Async Example

```rust use std::time::Duration; use locker::AsyncLocker; use tokio::time::delay_for;

let defaultmutexvalue = "value"; let locker = AsyncLocker::::newcustom(move || defaultmutexvalue); let mutex = locker.getmutex(1).await; let guard = mutex.lock().await; // lock let lockerclone = locker.clone(); tokio::spawn(async move { let mutex = locker.getmutex(1).await; let value = mutex.lock().await; // wait asserteq!(defaultmutexvalue, *value); }); delayfor(Duration::frommillis(200)).await; ```

Sync Example

```rust use std::time::Duration; use std::thread; use locker::SyncLocker;

let locker = SyncLocker::new(); let mutex = locker.getmutex(1); let _guard = mutex.lock().unwrap(); // lock let lockerclone = locker.clone(); thread::spawn(move || { let mutex = locker.getmutex(1); let _guard = mutex.lock().unwrap(); // wait }); thread::sleep(Duration::frommillis(200)); ```

Run test

To run tests:

sh cargo test -- --nocapture