···110110 }
111111112112 #[test]
113113+ fn assert_writeguard_none() {
114114+ let mut writer = Writer::new(0);
115115+ let mut reader = writer.build_reader().unwrap();
116116+ let read_lock = reader.lock();
117117+ let mut write_lock = writer.try_lock().unwrap();
118118+ write_lock.apply_op(CounterAddOp(1));
119119+ assert_eq!(*read_lock, 0);
120120+ drop(write_lock);
121121+ // read lock is still being held, so can't lock
122122+ assert!(writer.try_lock().is_none());
123123+ drop(read_lock);
124124+ // now do it all again, to also trigger code paths for the second value
125125+ let read_lock = reader.lock();
126126+ let mut write_lock = writer.try_lock().unwrap();
127127+ write_lock.apply_op(CounterAddOp(1));
128128+ assert_eq!(*read_lock, 1);
129129+ drop(write_lock);
130130+ // read lock is still being held, so can't lock
131131+ assert!(writer.try_lock().is_none());
132132+ }
133133+134134+ #[test]
113135 fn block() {
114136 let mut writer = Writer::new(0);
115137 let mut reader = writer.build_reader().unwrap();