История изменений
Исправление MOPKOBKA, (текущая версия) :
Хотя я сейчас понял что в Rust есть преимущество для вызова dyn Trait, он всегда передает его как структуру с двумя полями, и распаковывает по регистрам, а С++ не подозревает что у нас всего два поля по сути, и создает объект на стеке (так что создавать на стеке придется два поля все же), и уже дает ссылку на стек.
Так что в C++ вызовы Trait не такие эффективные на Linux ABI. Интересно как у Rust дела на MS ABI.
Исходная версия MOPKOBKA, :
Хотя я сейчас понял что в Rust есть преимущество для вызова dyn Trait, он всегда передает его как структуру с двумя полями, и распаковывает по регистрам, а С++ не подозревает что у нас всего два поля по сути, и создает объект на стеке (так что создавать на стеке придется два поля все же), и уже дает ссылку на стек.