Статическая отправка использует monomorphization, что создает отдельную копию кода для каждого конкретного типа.
Если у вас есть функция, которая используется с конкретными типами , вы можете понести большой штраф во время компиляции для создания и оптимизации всех этих версий. Это произойдет, даже если мономорфизация не добавит производительности в этих случаях.
Вместо этого вы можете использовать trait object, который создает единую реализацию кода (для).
Эти методы были добавлены в рамках RFC 640, но discussion, кажется, не говоря уже этот аспект. Фактически, они были originally implemented with static dispatch. Только позже они были changed to accept a trait object:
Restructure отладочные строителей, чтобы минимизировать Codegen
Переход от общих границ к Черта объектов и имеющих не-встраиваемыми внутренние методы должны сократить размер отладки impls, так как мы заботимся о скорости пути реализации отладки меньше бинарного раздувания.