error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration --> $DIR/impl-missing-where-clause-lifetimes-from-trait.rs:6:11 | LL | fn foo<'a, K>(self, _: T, _: K) where T: 'a, K: 'a; | ------- -- -- this bound might be missing in the impl | | | | | this bound might be missing in the impl | lifetimes in impl do not match this method in trait ... LL | fn foo<'a, K>(self, _: (), _: K) where { | ^^^^^^^ lifetimes do not match method in trait error[E0195]: lifetime parameters do not match the trait definition --> $DIR/impl-missing-where-clause-lifetimes-from-trait.rs:23:12 | LL | fn foo<'a>(&self, state: &'a State) -> &'a T { | ^^ | = note: lifetime parameters differ in whether they are early- or late-bound note: `'a` differs between the trait and impl --> $DIR/impl-missing-where-clause-lifetimes-from-trait.rs:14:12 | LL | trait Foo { | ------------ in this trait... LL | fn foo<'a>(&self, state: &'a State) -> &'a T | ^^ `'a` is early-bound LL | where LL | T: 'a; | -- this lifetime bound makes `'a` early-bound ... LL | / impl Foo for F LL | | where LL | | F: Fn(&State) -> &T, | |________________________- in this impl... LL | { LL | fn foo<'a>(&self, state: &'a State) -> &'a T { | ^^ `'a` is late-bound error[E0195]: lifetime parameters do not match the trait definition --> $DIR/impl-missing-where-clause-lifetimes-from-trait.rs:33:12 | LL | fn foo<'a: 'a>(&'a self) {} | ^^ | = note: lifetime parameters differ in whether they are early- or late-bound note: `'a` differs between the trait and impl --> $DIR/impl-missing-where-clause-lifetimes-from-trait.rs:29:12 | LL | trait Bar { | --------- in this trait... LL | fn foo<'a>(&'a self) {} | ^^ `'a` is late-bound ... LL | impl Bar for () { | --------------- in this impl... LL | fn foo<'a: 'a>(&'a self) {} | ^^ -- this lifetime bound makes `'a` early-bound | | | `'a` is early-bound error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0195`.