If you guarantee static dispatch, then you haven&#x27;t solved the expression problem, which requires some sort of dynamic dispatch (even a switch&#x2F;pattern match). The only way to address the expression problem <i>and</i> provide zero time overhead in practice (though it can&#x27;t be guaranteed) is with a JIT&#x2F;profile-guided optimization.<p>This, BTW, is why I find Rust&#x27;s use of the term &quot;zero-cost abstractions&quot; confusing. Where Rust guarantees zero-cost it does so for weak abstractions only, and where it provides stronger abstractions, their cost may be higher than in other languages (because Rust&#x27;s compiler is still behind on optimizations). It&#x27;s a little like a restaurant advertising &quot;free food&quot;, when they&#x27;re really only offering free popcorn at the bar, while their steaks are rather pricey. It may be a great offering, but the copy is a little confusing.