error[E0623]: lifetime mismatch --> $DIR/ex3-both-anon-regions-self-is-anon.rs:7:19 | LL | fn foo<'a>(&self, x: &Foo) -> &Foo { | ---- ---- | | | this parameter and the return type are declared with different lifetimes... LL | if true { x } else { self } | ^ ...but data from `x` is returned here | = note: each elided lifetime in input position becomes a distinct lifetime help: consider introducing a named lifetime parameter and update trait if needed | LL | fn foo<'a>(&'a self, x: &'a Foo) -> &Foo { | ++ ++ error: aborting due to previous error For more information about this error, try `rustc --explain E0623`.