Pull to refresh

Comments 6

Очень крутая статья, спасибо! Моих познаний в Rust пока не достаточно чтобы понять все примеры. Добавил в закладки, буду к ней возвращаться.

Всегда интересовали разные способы оптимизаций.

Работает только если использовать Global как аллокатор😅.

Прикольная структура, но не знаю, нужно ли все это? 🤔 Есть хоть какие нибудь бенчмарки?

И может быть хранить в структуре также сам аллокатор? Ведь очень часто это просто ZST, и доп размера она иметь не будет

Rust: Никому это SSO не нужно, выкинем его нафиг
Все разрабы: *Создают свою строку заново чтобы вернуть SSO назад*

Насколько я понимаю, логика здесь другая: не «никому SSO не нужно», а сначала «SSO может иногда ухудшить производительность и точно увеличит кодовую базу» с последующим «…, а ещё пересмотр решения нарушит обратную совместимость: мы пообещали в документации определённые особенности внутреннего представления и теперь часть unsafe кода зависит от них».
И насчёт выкинем: SSO был до 1.0?


Я замечу, что описанная в статье строка с SSO имеет четыре варианта: Box, &str, &'static str, small string. Почти наверняка в std такое бы не появилось, это оптимизация под конкретную задачу с допущениями, которые неприемлемы для стандартной библиотеки.

Sign up to leave a comment.