Hi :wave: I maintain a [crate that abstracts over growable vectors](https://artichoke.github.io/artichoke/spinoso_array/) such that they would be appropriate for implementing a Ruby `Array`. This crate had backends for `Vec` and `SmallVec`. Yesterday I added a backend for `TinyVec`. PR is here: https://github.com/artichoke/artichoke/pull/1094. I based the `TinyVec` backend on the existing backend for `SmallVec`. Apart from adding a boatload of `T: Default` bounds, the change was actually really small -- https://github.com/artichoke/artichoke/commit/1935c0543a9c26176494377da8c351a66a181eca. I appreciated the increased API compatibility with `Vec` compared to `SmallVec`, in particular a `splice` method, which let me simplify several methods. There were two things I was missing: - There is no equivalent of `vec!` or `SmallVec::from_elem` with a non-constant length. I had to use `iter::repeat` like this: ```rust Self(iter::repeat(default).take(len).collect()) ``` - There is no `From<Vec<T>>` impl, which forces one to go through `vec::IntoIter` even if the `TinyVec` would be spilled with this `Vec`.