error: lifetime may not live long enough --> $DIR/issue-90170-elision-mismatch.rs:3:40 | LL | pub fn foo(x: &mut Vec<&u8>, y: &u8) { x.push(y); } | - - ^^^^^^^^^ argument requires that `'1` must outlive `'2` | | | | | let's call the lifetime of this reference `'1` | let's call the lifetime of this reference `'2` | = note: requirement occurs because of a mutable reference to `Vec<&u8>` = note: mutable references are invariant over their type parameter = help: see for more information about variance help: consider introducing a named lifetime parameter | LL | pub fn foo<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); } | ++++ ++ ++ error: lifetime may not live long enough --> $DIR/issue-90170-elision-mismatch.rs:5:44 | LL | pub fn foo2(x: &mut Vec<&'_ u8>, y: &u8) { x.push(y); } | - - ^^^^^^^^^ argument requires that `'1` must outlive `'2` | | | | | let's call the lifetime of this reference `'1` | let's call the lifetime of this reference `'2` | = note: requirement occurs because of a mutable reference to `Vec<&u8>` = note: mutable references are invariant over their type parameter = help: see for more information about variance help: consider introducing a named lifetime parameter | LL - pub fn foo2(x: &mut Vec<&'_ u8>, y: &u8) { x.push(y); } LL + pub fn foo2<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); } | error: lifetime may not live long enough --> $DIR/issue-90170-elision-mismatch.rs:7:63 | LL | pub fn foo3<'a>(_other: &'a [u8], x: &mut Vec<&u8>, y: &u8) { x.push(y); } | - - ^^^^^^^^^ argument requires that `'1` must outlive `'2` | | | | | let's call the lifetime of this reference `'1` | let's call the lifetime of this reference `'2` | = note: requirement occurs because of a mutable reference to `Vec<&u8>` = note: mutable references are invariant over their type parameter = help: see for more information about variance help: consider reusing a named lifetime parameter | LL | pub fn foo3<'a>(_other: &'a [u8], x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); } | ++ ++ error: aborting due to 3 previous errors