Like `insert` but returns an error on allocation failure.
(&mut self, k: K, v: V)
| 118 | |
| 119 | /// Like `insert` but returns an error on allocation failure. |
| 120 | pub fn try_insert(&mut self, k: K, v: V) -> Result<Option<V>, OutOfMemory> { |
| 121 | let i = k.index(); |
| 122 | if i < self.elems.len() { |
| 123 | Ok(Some(core::mem::replace(&mut self.elems[i], v))) |
| 124 | } else { |
| 125 | self.try_resize(i + 1)?; |
| 126 | self.elems[i] = v; |
| 127 | Ok(None) |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | /// Remove the element at `k`, if it exists, replacing it with the default |
| 132 | /// value. |