This is an implementation of bitmapped vector tries, which offers highly efficient (amortised linear time) index lookups as well as appending elements to, or popping elements off, either side of the vector.
This is generally the best data structure if you're looking for
something list like. If you don't need lookups or updates by
index, but do need fast concatenation of whole lists, you should
If you're familiar with the Clojure variant, this improves on it
by being efficiently extensible at the front as well as the back.
If you're familiar with Immutable.js, this is
essentially the same, but with easier mutability because Rust has
the advantage of direct access to the garbage collector (which in
our case is just
An iterator over vectors with values of type
A persistent vector of elements of type