trait Trait { fn foo<'a, K>(self, _: T, _: K) where T: 'a, K: 'a; } impl Trait<()> for () { fn foo<'a, K>(self, _: (), _: K) where { //~ ERROR E0195 todo!(); } } struct State; trait Foo { fn foo<'a>(&self, state: &'a State) -> &'a T where T: 'a; } impl Foo for F where F: Fn(&State) -> &T, { fn foo<'a>(&self, state: &'a State) -> &'a T { //~ ERROR E0195 self(state) } } trait Bar { fn foo<'a>(&'a self) {} } impl Bar for () { fn foo<'a: 'a>(&'a self) {} //~ ERROR E0195 } fn main() { ().foo((), ()); }