|
|
|
|
|
by orlp
1260 days ago
|
|
> That said, the pop implementation seems faulty in that it does not appear to deallocate empty chunks. Does Rust have any non-obvious magic here? No, the only magic here is my utter lack of testing for throwaway HN code :) A corrected implementation would be: pub fn pop(&mut self) -> Option<T> {
let last = self.chunks.last_mut()?;
let ret = last.pop()?;
if last.is_empty() {
self.chunks.pop();
}
Some(ret)
}
This is only correct if we maintain the invariant that we do not keep any empty chunks around, but the rest of the implementation does not violate this. |
|