error[E0308]: mismatched types --> $DIR/match-ref-mut-invariance.rs:10:37 | LL | match self.0 { ref mut x => x } | ^ lifetime mismatch | = note: expected type `&'a mut &'a i32` found type `&'a mut &'b i32` note: the lifetime 'a as defined on the method body at 9:12... --> $DIR/match-ref-mut-invariance.rs:9:12 | LL | fn bar<'a>(&'a mut self) -> &'a mut &'a i32 { | ^^ note: ...does not necessarily outlive the lifetime 'b as defined on the impl at 8:6 --> $DIR/match-ref-mut-invariance.rs:8:6 | LL | impl<'b> S<'b> { | ^^ error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.