impl Foo where A: B { } impl Foo for C where A: B { } impl Foo for C { fn foo -> C where A: B { } } fn foo -> C where A: B { } struct Foo where A: B { } trait Foo : C where A: B { }