chiark / gitweb /
Mutex debug: Introduce Mutex and guard types
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Mar 2022 11:46:54 +0000 (12:46 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Mar 2022 23:50:50 +0000 (00:50 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/debugmutex.rs [new file with mode: 0644]
src/lib.rs

diff --git a/src/debugmutex.rs b/src/debugmutex.rs
new file mode 100644 (file)
index 0000000..a9960fe
--- /dev/null
@@ -0,0 +1,25 @@
+
+use crate::prelude::*;
+
+#[derive(Debug, Default)]
+pub struct Mutex<T>(parking_lot::Mutex<T>);
+
+#[derive(Debug, Display)]
+pub struct MutexGuard<'g, T>(parking_lot::MutexGuard<'g, T>);
+
+impl<T> Mutex<T> {
+  pub fn new(t: T) -> Self {
+    Mutex(parking_lot::Mutex::new(t))
+  }
+  pub fn lock(&self) -> MutexGuard<T> {
+    MutexGuard(self.0.lock())
+  }
+}
+
+impl<'g,T> Deref for MutexGuard<'g,T> {
+  type Target = T;
+  fn deref(&self) -> &T { &*self.0 }
+}
+impl<'g,T> DerefMut for MutexGuard<'g,T> {
+  fn deref_mut(&mut self) -> &mut T { &mut *self.0 }
+}
index 232001c092527cd2e3e177ff24e485d8689f6595..8b206254ecaa4544c7125205c1b0128a07c19a55 100644 (file)
@@ -17,6 +17,7 @@ pub mod clock;
 pub mod commands;
 pub mod config;
 pub mod deck;
+pub mod debugmutex;
 pub mod debugreader;
 pub mod error;
 pub mod gamestate;