enum Enum<'a, T, 'b> { //~^ ERROR lifetime parameters must be declared prior to type and const parameters A(&'a &'b T) } struct Struct<'a, T, 'b> { //~^ ERROR lifetime parameters must be declared prior to type and const parameters x: &'a &'b T } trait Trait<'a, T, 'b> {} //~^ ERROR lifetime parameters must be declared prior to type and const parameters fn foo<'a, T, 'b>(x: &'a T) {} //~^ ERROR lifetime parameters must be declared prior to type and const parameters struct Y(T); impl<'a, T, 'b> Y {} //~^ ERROR lifetime parameters must be declared prior to type and const parameters mod bar { pub struct X<'a, 'b, 'c, T> { a: &'a str, b: &'b str, c: &'c str, t: T, } } fn bar<'a, 'b, 'c, T>(x: bar::X<'a, T, 'b, 'c>) {} //~^ ERROR type provided when a lifetime was expected fn main() {}