struct Foo<'a>(&'a str); struct Buzz<'a, 'b>(&'a str, &'b str); struct Qux<'a, T>(&'a T); struct Quux(T); enum Bar { A, B, C, } struct Baz<'a, 'b, 'c> { buzz: Buzz<'a>, //~^ ERROR struct takes 2 lifetime arguments //~| HELP add missing lifetime argument bar: Bar<'a>, //~^ ERROR enum takes 0 lifetime arguments //~| HELP remove the unnecessary generics foo2: Foo<'a, 'b, 'c>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime arguments qux1: Qux<'a, 'b, i32>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime argument qux2: Qux<'a, i32, 'b>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime argument qux3: Qux<'a, 'b, 'c, i32>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime arguments qux4: Qux<'a, i32, 'b, 'c>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime arguments qux5: Qux<'a, 'b, i32, 'c>, //~^ ERROR struct takes 1 lifetime argument //~| HELP remove the lifetime argument quux: Quux<'a, i32, 'b>, //~^ ERROR struct takes 0 lifetime arguments //~| HELP remove the lifetime argument } pub trait T { type A; type B; } fn trait_bound_generic>(_i: I) { //~^ ERROR trait takes 0 generic arguments //~| HELP replace the generic bounds with the associated types } fn main() {}