We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 96e0917 commit f677c78Copy full SHA for f677c78
src/lib.rs
@@ -153,15 +153,14 @@ impl<T> Singleton<T> {
153
/// assert_eq!(FOO.try_get_mut(), None);
154
/// ```
155
pub fn try_get_mut(&self) -> Option<&mut T> {
156
- match self
157
- .used
158
- .compare_exchange(false, true, Ordering::Relaxed, Ordering::Relaxed)
159
- {
160
- Ok(_) => Some(unsafe {
+ let already_used = self.used.swap(true, Ordering::AcqRel);
+ if already_used {
+ None
+ } else {
+ Some(unsafe {
161
// SAFETY: no reference has been given out yet and we won't give out another.
162
&mut *self.value.get()
163
- }),
164
- Err(_) => None,
+ })
165
}
166
167
0 commit comments