<p><pre><code>  &gt; Yep.
</code></pre>
Unlike some other languages, the <i>vast</i> majority of calls in Rust are static rather than dynamic (even moreso than C++), which averts the problem from the outset. And even then, LLVM is still capable of AOT devirtualization. It&#x27;s very rare to reach for a trait object rather than a bounded generic, so I&#x27;m afraid that categorizing bounded generics as a &quot;weak abstraction&quot; is hyperbolic on your part. :)<p><pre><code>  &gt; a JIT can do this
</code></pre>
Constant folding is hardly the exclusive purview of JIT. :P When coming up with the above example I had to repeatedly jump through hoops in order to keep LLVM from statically evaluating the entire function; even when I managed to force LLVM to stop inlining the function, it went behind my back and propagated the constant into the uninlined function, creating a symbol that did nothing other than return the integer 5050. :P