What I don't get about this plan is why, rather than starting over, it doesn't try to integrate everything with the vector
library, which seems the natural way of developing text
As it stands, every manipulation of a Foundation.String
I might be making some dumb mistake with these benchmarks https://gist.github.com/michaelt/2d457791178cc37f6e22729d43447523 but seem to be getting results like these
benchmarking unimpeded-fusion/filter/foundation
mean 145.2 μs (143.7 μs .. 146.7 μs)
benchmarking unimpeded-fusion/filter/text
mean 2.050 μs (2.003 μs .. 2.117 μs)
benchmarking unimpeded-fusion/drop.filter/foundation
mean 142.3 μs (141.1 μs .. 143.9 μs)
benchmarking unimpeded-fusion/drop.filter/text
mean 4.612 μs (4.589 μs .. 4.644 μs)
benchmarking unimpeded-fusion/drop.filter/map.drop.filter/foundation
mean 190.6 μs (187.1 μs .. 203.8 μs)
benchmarking unimpeded-fusion/drop.filter/map.drop.filter/text
mean 5.405 μs (5.121 μs .. 6.002 μs)
benchmarking unimpeded-fusion/drop.filter/take.map.drop.filter/foundation
mean 186.5 μs (185.3 μs .. 188.3 μs)
benchmarking unimpeded-fusion/drop.filter/take.map.drop.filter/text
mean 602.7 ns (587.8 ns .. 636.2 ns)
benchmarking unimpeded-fusion/drop.filter/take.double.map.drop.filter/foundation
mean 186.5 μs (185.1 μs .. 188.2 μs)
benchmarking unimpeded-fusion/drop.filter/take.double.map.drop.filter/text
mean 5.002 μs (4.939 μs .. 5.088 μs)