Rustには、トレイトに制約されたジェネリクスを表現するための略記法があります。
fn my_function(foo: impl Foo) { ... }
上記の記法は下記のものと同等です。
fn my_function<T>(foo: T) where T:Foo { ... }