On the other hand, if the compiler can prove at compile-time what type the object must have at run-time, it can eliminate the dynamic dispatch and effectively re-enable inlining.
Which is why runtime polymorphism in Rust is very hard to do. The its focus on zero-cost abstractions means that the natural way to write polymorphic code is compiled (and must be compiled) to static dispatch.
MarsIronPI|1 month ago
khuey|1 month ago
https://hubicka.blogspot.com/2014/02/devirtualization-in-c-p...