Dev Study
Rust コース

52. 静的ディスパッチと動的ディスパッチ — ジェネリクスとの使い分け

ジェネリクス(<T: Greet>)は、使われた型ごとに専用の関数をコンパイル時に作る「静的ディスパッチ」です。一方 &dyn Greet は、どの実装を呼ぶかを実行時に対応表(vtable)から探す「動的ディスパッチ」です。書き方は似ていますが、呼び先が決まるタイミングが違います。

静的は呼び出しが速い代わりにコードが型の数だけ複製され、動的はわずかな実行時コストと引き換えに、異なる型をひとつの入れ物にまとめられます。実務では基本はジェネリクスを使い、「異なる型を同じ Vec に入れたい」「コンパイル時間やバイナリサイズを抑えたい」ときに dyn を選ぶのが目安です。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Rust
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗