関連型を持つトレイトオブジェクトを宣言する

dyn トレイト<関連型 = 型>

trait Tr {
    type Ty;
    fn go(&self) -> () {}
}

struct St {}
impl Tr for St {
    type Ty = String;
    fn go(&self) -> () {}
}

// トレイトオブジェクトに対して関連型を指定できる
fn foo(t: &dyn Tr<Ty = String>) -> () {
    t.go()
}

fn main() {
    foo(&St{});
}

参照

トレイトオブジェクト - あるマのメモ書き