#![recursion_limit="1024"] pub struct S0(T,T); pub struct S1(Option>>>,Option>>>); pub struct S2(Option>>>,Option>>>); pub struct S3(Option>>>,Option>>>); pub struct S4(Option>>>,Option>>>); pub struct S5(Option>>>,Option>>>,Option); trait Foo { fn xxx(&self); } trait Bar {} // anything local or #[fundamental] impl Foo for T where T: Bar, T: Sync { fn xxx(&self) {} } impl Foo for S5 { fn xxx(&self) {} } impl Foo for S5 { fn xxx(&self) {} } fn main() { let _ = >::xxx; //~ ERROR type annotations needed }