Rust provides dynamic dispatch through trait objects : <a href="https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;trait-objects.html" rel="nofollow">https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;trait-objects.html</a>
It provides it with a simple vtable like other languages, with the same efficiency. And PGO is possible with the use of LLVM, but not easily for now : <a href="https:&#x2F;&#x2F;github.com&#x2F;Geal&#x2F;pgo-rust" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Geal&#x2F;pgo-rust</a>