Comments 6
Очень крутая статья, спасибо! Моих познаний в Rust пока не достаточно чтобы понять все примеры. Добавил в закладки, буду к ней возвращаться.
Всегда интересовали разные способы оптимизаций.
Работает только если использовать Global как аллокатор😅.
Прикольная структура, но не знаю, нужно ли все это? 🤔 Есть хоть какие нибудь бенчмарки?
И может быть хранить в структуре также сам аллокатор? Ведь очень часто это просто ZST, и доп размера она иметь не будет
Автор переизобрел smol_str (https://lib.rs/crates/smol_str)
Rust: Никому это SSO не нужно, выкинем его нафиг
Все разрабы: *Создают свою строку заново чтобы вернуть SSO назад*
Насколько я понимаю, логика здесь другая: не «никому SSO не нужно», а сначала «SSO может иногда ухудшить производительность и точно увеличит кодовую базу» с последующим «…, а ещё пересмотр решения нарушит обратную совместимость: мы пообещали в документации определённые особенности внутреннего представления и теперь часть unsafe
кода зависит от них».
И насчёт выкинем: SSO был до 1.0?
Я замечу, что описанная в статье строка с SSO имеет четыре варианта: Box, &str, &'static str, small string. Почти наверняка в std такое бы не появилось, это оптимизация под конкретную задачу с допущениями, которые неприемлемы для стандартной библиотеки.
Собственный строковый тип на Rust