1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
trait T { type A; fn foo(&self) -> Self::A { panic!() } } struct S<X>(std::marker::PhantomData<X>); impl<X> T for S<X> { type A = X; } fn main() { S(std::marker::PhantomData).foo(); //~ ERROR type annotations needed }