1 /// Represents the result of a non-blocking read from a [DashMap](crate::DashMap). 2 #[derive(Debug)] 3 pub enum TryResult<R> { 4 /// The value was present in the map, and the lock for the shard was successfully obtained. 5 Present(R), 6 /// The shard wasn't locked, and the value wasn't present in the map. 7 Absent, 8 /// The shard was locked. 9 Locked, 10 } 11 12 impl<R> TryResult<R> { 13 /// Returns `true` if the value was present in the map, and the lock for the shard was successfully obtained. is_present(&self) -> bool14 pub fn is_present(&self) -> bool { 15 matches!(self, TryResult::Present(_)) 16 } 17 18 /// Returns `true` if the shard wasn't locked, and the value wasn't present in the map. is_absent(&self) -> bool19 pub fn is_absent(&self) -> bool { 20 matches!(self, TryResult::Absent) 21 } 22 23 /// Returns `true` if the shard was locked. is_locked(&self) -> bool24 pub fn is_locked(&self) -> bool { 25 matches!(self, TryResult::Locked) 26 } 27 28 /// If `self` is [Present](TryResult::Present), returns the reference to the value in the map. 29 /// Panics if `self` is not [Present](TryResult::Present). unwrap(self) -> R30 pub fn unwrap(self) -> R { 31 match self { 32 TryResult::Present(r) => r, 33 TryResult::Locked => panic!("Called unwrap() on TryResult::Locked"), 34 TryResult::Absent => panic!("Called unwrap() on TryResult::Absent"), 35 } 36 } 37 38 /// If `self` is [Present](TryResult::Present), returns the reference to the value in the map. 39 /// If `self` is not [Present](TryResult::Present), returns `None`. try_unwrap(self) -> Option<R>40 pub fn try_unwrap(self) -> Option<R> { 41 match self { 42 TryResult::Present(r) => Some(r), 43 _ => None, 44 } 45 } 46 } 47