app_state/states/
mut_app_state_lock.rs1use crate::MutAppState;
2use std::ops::{Deref, DerefMut};
3use std::sync::MutexGuard;
4
5pub struct MutAppStateLock<'a, T: ?Sized>(MutexGuard<'a, T>);
24
25impl<'a, T: 'static + Send> MutAppStateLock<'a, T> {
26 pub fn new(inner: &'a MutAppState<T>) -> MutAppStateLock<'a, T> {
27 MutAppStateLock(inner.lock().unwrap())
28 }
29}
30
31impl<'a, T: ?Sized> MutAppStateLock<'a, T> {
32 pub fn get_ref(&self) -> &MutexGuard<'a, T> {
34 &self.0
35 }
36
37 pub fn into_inner(self) -> MutexGuard<'a, T> {
39 self.0
40 }
41}
42
43impl<'a, T: ?Sized> Deref for MutAppStateLock<'a, T> {
44 type Target = T;
45
46 fn deref(&self) -> &T {
47 &self.0
48 }
49}
50
51impl<'a, T: ?Sized> DerefMut for MutAppStateLock<'a, T> {
52 fn deref_mut(&mut self) -> &mut T {
53 &mut self.0
54 }
55}