-
Возможно имеет смысл научить fast_string мувать в себя std::String/Vec
-
Тогда можно иметь 4 состояния
- 00 - small - строка на стеке, SSO оптимизация.
- 01 - medium - строка как вектор, для коротких строк не влезающих на стек, а так же для мува.
- 10 - large - строка как вектор, но с ref count, для остальных строк, COW оптимизация.
- 11 - static - указатель на статическую строку для которой можно не выделять память.
-
Метод with_capacity, нужно для pattern-ов like StringBuilder
-
Метод insert(pos, str), так как он есть у std::String
-
Зачем нам отдельно StringInner?
- Не показывать, что наша строка это C union
- Чтобы разделить имплементацию и API
-
инлайны и вынести в отдельные функции больше померять
-
miri test для ub и тд