use crate::MutAppState;
use std::ops::{Deref, DerefMut};
use std::sync::MutexGuard;
pub struct MutAppStateLock<'a, T: ?Sized>(MutexGuard<'a, T>);
impl<'a, T: 'static + Send> MutAppStateLock<'a, T> {
pub fn new(inner: &'a MutAppState<T>) -> MutAppStateLock<'a, T> {
MutAppStateLock(inner.lock().unwrap())
}
}
impl<'a, T: ?Sized> MutAppStateLock<'a, T> {
pub fn get_ref(&self) -> &MutexGuard<'a, T> {
&self.0
}
pub fn into_inner(self) -> MutexGuard<'a, T> {
self.0
}
}
impl<'a, T: ?Sized> Deref for MutAppStateLock<'a, T> {
type Target = T;
fn deref(&self) -> &T {
&self.0
}
}
impl<'a, T: ?Sized> DerefMut for MutAppStateLock<'a, T> {
fn deref_mut(&mut self) -> &mut T {
&mut self.0
}
}