When using a trait with an associated type as a bound on a type argument, its associated types are treated as arguments rather than as determined by the impl:
trait Foo {
type T;
}
trait Bar<F: Foo> {
fn bar(foo: &F);
}
error: wrong number of type arguments: expected 1, found 0
http://is.gd/KPP4ka