Mark this object as leaked (interned). It will never be deallocated.
(&self)
| 162 | |
| 163 | /// Mark this object as leaked (interned). It will never be deallocated. |
| 164 | pub fn leak(&self) { |
| 165 | debug_assert!(!self.is_leaked()); |
| 166 | let mut old = State::from_raw(self.state.load(Ordering::Relaxed)); |
| 167 | loop { |
| 168 | let new_state = old.with_leaked(true); |
| 169 | match self.state.compare_exchange_weak( |
| 170 | old.as_raw(), |
| 171 | new_state.as_raw(), |
| 172 | Ordering::AcqRel, |
| 173 | Ordering::Relaxed, |
| 174 | ) { |
| 175 | Ok(_) => return, |
| 176 | Err(curr) => old = State::from_raw(curr), |
| 177 | } |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | /// Check if this object is leaked (interned). |
| 182 | pub fn is_leaked(&self) -> bool { |
nothing calls this directly
no test coverage detected