struct A(T); struct B; trait I {} impl I for B {} impl I for B {} trait V { fn method(self) -> U; } impl V for A where T: I, { fn method(self) -> U { unimplemented!() } } fn main() { let a = A(B); a.method(); //~^ ERROR type annotations needed //~| ERROR type annotations needed }