Полный текст
Как Rust реализует трейт-объекты и почему dyn Trait медленнее дженериковПринято считать, что dyn Trait уступает дженерикам исключительно из-за прыжков по vtable. Звучит логично, но это лишь малая часть проблемы. Всё самое серьёзное начинается на этапе компиляции.Настоящая цена полиморфизма — слепота оптимизатора. Натыкаясь на косвенный вызов через fat pointer, LLVM просто сдаётся. Без знания конкретного типа ломается инлайнинг, отваливается автовекторизация и прерывается протаскивание констант. Один непрозрачный переход умножает на ноль целый каскад оптимизаций.