Rust Opaque Types: Static Dispatch vs. Dynamic Dispatch
- tags: Rust
- source: Johnston, Dylan R. “Formally Verifying Rust’s Opaque Types,” August 1, 2022. https://dylanj.xyz/posts/rust-coq-opaque-types/.
Prelude⌗
trait ToString {
fn to_string(&self) -> String;
}
Static Dispatch⌗
fn yell<S: ToString>(stringable: S) {
println!(stringable.to_string().to_uppercase())
}
Dynamic Dispatch⌗
fn yell(stringable: &dyn ToString) {
println!(stringable.to_string().to_uppercase())
}
impl Trait
⌗
fn yell(stringable: impl ToString) {
println!(stringable.to_string().to_uppercase())
}