トレイト(Rust)
Rustで振る舞いを共有する仕組み。Javaのインターフェースやhaskellの型クラスに近い。trait Animal { fn speak(&self) -> String; } のように定義し、型とは別に実装する。
Javaのインターフェースとの違いは、自分が所有しない型にもトレイトを実装できること(クレートをまたぐ場合は孤児ルールが制限する)。デフォルト実装も書け、上書きもできる。トレイトオブジェクト(dyn Trait)はvtableによる実行時ポリモーフィズムを与える。既定は静的ディスパッチ(ジェネリクスとトレイト境界)で、単相化される。主な標準トレイトはClone、Debug、Display、Iterator、Serialize/Deserialize。asyncトレイトはRust 1.75(2023年)で安定化した。