There seem to be two ways to add an element to a StableVec:
-
StableVec::push, which inserts an element in the next free slot? It is not entirely clear by the documentation what this is supposed to be?
-
StableVec::insert, which inserts an element at the specified position, but does panic if the index is out of bounds (which makes it quite inconvenient, because you would have to always call StableVec::reserve_for(index) and then call StableVec::insert, to prevent panics).
I am a bit confused about the behavior of those two methods.
- I expect a function called
push to push an element to the back of the vec (like Vec::push)
- and I do not expect
insert to panic if the index is out of bounds (I see this method more like a HashMap::<usize, T>::insert)
I would suggest adding the following methods:
StableVec::push_back(&mut self, value: T), appends an element to the back of the StableVec, ignoring free slots
StableVec::pop_back(&mut self) -> Option<T>, removes the last element from a StableVec
And changing the StableVec::insert method to not panic if the capacity is exhausted and instead resize the vector.
There seem to be two ways to add an element to a
StableVec:StableVec::push, which inserts an element in the next free slot? It is not entirely clear by the documentation what this is supposed to be?StableVec::insert, which inserts an element at the specified position, but does panic if the index is out of bounds (which makes it quite inconvenient, because you would have to always callStableVec::reserve_for(index)and then callStableVec::insert, to prevent panics).I am a bit confused about the behavior of those two methods.
pushto push an element to the back of the vec (likeVec::push)insertto panic if the index is out of bounds (I see this method more like aHashMap::<usize, T>::insert)I would suggest adding the following methods:
StableVec::push_back(&mut self, value: T), appends an element to the back of theStableVec, ignoring free slotsStableVec::pop_back(&mut self) -> Option<T>, removes the last element from aStableVecAnd changing the
StableVec::insertmethod to not panic if the capacity is exhausted and instead resize the vector.