What application are you using this for? And did you consider just using an intrusive list for that, and then putting the nodes, in say a Vec<Option<T>> ?

I don’t really think this data-structure should be called / advertised as a doubly-linked list since it cannot do O(1) splice which is pretty much the major algorithmic selling-point of doubly-linked lists over other standard data-structures.

AFAICT this data-structure cannot even do O(1) splice at the ends, which is something that double-ended queues can often do (e.g. VecDeque cannot, but C++'s std::deque can). So it’s hard for me to imagine an application that would be properly suited for indexlist and not well suited for std::deque [0].