Skip to main content

o_sfu_core/engine/
sync.rs

1use std::sync::{Mutex, MutexGuard, PoisonError, RwLock, RwLockReadGuard, RwLockWriteGuard};
2
3pub fn lock_unpoisoned<T>(lock: &Mutex<T>) -> MutexGuard<'_, T> {
4    lock.lock().unwrap_or_else(PoisonError::into_inner)
5}
6
7pub fn read_unpoisoned<T>(lock: &RwLock<T>) -> RwLockReadGuard<'_, T> {
8    lock.read().unwrap_or_else(PoisonError::into_inner)
9}
10
11pub fn write_unpoisoned<T>(lock: &RwLock<T>) -> RwLockWriteGuard<'_, T> {
12    lock.write().unwrap_or_else(PoisonError::into_inner)
13}