# To Do List for `pielist`
These are suggestions for improvements:
- Remove element/node by Index<T>/NodeHandle
- A drain method, similar to Vec::drain, would be a powerful addition. It would take a range and return an iterator that removes elements from the list, yielding their values and returning their nodes to the pool.
- While CursorMut::splice_before is the fundamental operation, higher-level convenience methods on PieList itself would improve ergonomics:
- `append` Move all elements from the other list to the end of this list
- `prepend` Move all elements from the other list to the front of this list
- pool.free_len(): Return the number of nodes currently in the free list.
- pool.reserve(additional): Ensure the pool has capacity for at least additional new nodes to avoid reallocations in a critical path.
- pool.shrink_to_fit(): An advanced (and potentially unsafe if indices are held) method to reclaim unused memory from the end of the pool's vector.
- Add more comparative tests against `index_list`