use anyhow::Result;
use std::sync::{Mutex, MutexGuard};
use tokio::sync::{Mutex as AsyncMutex, MutexGuard as AsyncMutexGuard};
pub fn lock_mutex<T>(mutex: &Mutex<T>) -> Result<MutexGuard<'_, T>> {
mutex
.lock()
.map_err(|e| anyhow::anyhow!("Mutex poisoned: {}", e))
}
pub async fn lock_async_mutex<T>(mutex: &AsyncMutex<T>) -> AsyncMutexGuard<'_, T> {
mutex.lock().await
}