struct MyType; struct MyType1<T>(T); trait Bar { type Out; } impl<T> MyType { //~^ ERROR the type parameter `T` is not constrained } impl<T> MyType1<T> { // OK, T is used in `Foo<T>`. } impl<T,U> MyType1<T> { //~^ ERROR the type parameter `U` is not constrained } impl<T,U> MyType1<T> where T: Bar<Out=U> { // OK, T is used in `Foo<T>`. } fn main() { }