generated at
trait bound
genericな型に対して、traitで制限を設ける
hsの型クラス制約と同じmrsekut



いくつかの書き方がある
インライン記法
上にも書いた「:」で指定するもの
rs
fn hoge<T: HogeTrait>(t: T) { ... }
複数ある場合は + で繋ぐ
rs
fn top_ten<T: Debug + Hash + Eq>(values: &Vec<T>) {..}
where記法
where を使う
冗長だがもっとも柔軟な書き方
trait自信がgenricsだと、これでしか書けない
rs
fn hoge<T>(t: T) where T: HogeTrait { ... }
impl Trait記法
impl を使う
型パラメータを明示せずにかける
ただし、その本来の型パラメータなるものを使いまわしできない
引数、戻り値にそれを指定するとか
rs
fn hoge(t: impl HogeTrait){ ... }




他言語で似てる機能


あまり真面目に読んでないmrsekut

「トレイト境界」という訳について
「トレイト制約」の方が良さげかも、という議論