Полный текст
Точная копия логики C++ обрушила скорость на 22 000%Иногда портирование кода слово в слово — худшая идея. При переносе libphonenumber на Rust выяснилось, что плюсовый глобальный кэш регулярок дико тормозит из-за аллокаций в рантайме.Чтобы добиться парсинга номера за 500 наносекунд, архитектуру пришлось перекроить. Заякоривание паттернов ушло в этап сборки, а инициализация самих регулярок стала ленивой. В горячих путях тяжёлые движки заменили на префиксное дерево (Trie) для поиска Unicode-символов за O(1). А финальное форматирование теперь идёт без аллокаций, строго на стеке.Разберём анатомию оптимизации.