Merge pull request #1957 from TheBlueMatt/2022-01-mon-ref-lockorder
[rust-lightning] / lightning / src / util / fairrwlock.rs
index 8dd74f2b53dc1697b5c8d4ad2e22eb231c84ba4e..5715a8cf646cd67e29b7aa5c21c8722d89a45964 100644 (file)
@@ -1,4 +1,4 @@
-use std::sync::{TryLockResult, LockResult, RwLock, RwLockReadGuard, RwLockWriteGuard};
+use std::sync::{LockResult, RwLock, RwLockReadGuard, RwLockWriteGuard, TryLockResult};
 use std::sync::atomic::{AtomicUsize, Ordering};
 
 /// Rust libstd's RwLock does not provide any fairness guarantees (and, in fact, when used on
@@ -32,10 +32,6 @@ impl<T> FairRwLock<T> {
                res
        }
 
-       pub fn try_write(&self) -> TryLockResult<RwLockWriteGuard<T>> {
-               self.lock.try_write()
-       }
-
        pub fn read(&self) -> LockResult<RwLockReadGuard<T>> {
                if self.waiting_writers.load(Ordering::Relaxed) != 0 {
                        let _write_queue_lock = self.lock.write();
@@ -47,4 +43,8 @@ impl<T> FairRwLock<T> {
                // codebase.
                self.lock.read()
        }
+
+       pub fn try_write(&self) -> TryLockResult<RwLockWriteGuard<'_, T>> {
+               self.lock.try_write()
+       }
 }