Decrements rc; frees slot at 0. Safe against double-release.
(&mut self, h: u32)
| 115 | |
| 116 | // Decrements rc; frees slot at 0. Safe against double-release. |
| 117 | pub fn release(&mut self, h: u32) { |
| 118 | if h == 0 { return; } |
| 119 | let idx = (h - 1) as usize; |
| 120 | if let Some(slot) = self.slots.get_mut(idx) |
| 121 | && slot.rc > 0 |
| 122 | { |
| 123 | slot.rc -= 1; |
| 124 | if slot.rc == 0 { self.free_list.push(idx as u32); } |
| 125 | } |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | /* Error stash */ |
no test coverage detected