struct Foo<'c, 'd>(&'c (), &'d ()); impl<'c, 'd> Foo<'c, 'd> { fn acc(&mut self, _bar: &Bar) -> &'d () { todo!() } } struct Bar; impl<'a> Bar { fn boom(&self, foo: &mut Foo<'_, '_, 'a>) -> Result<(), &'a ()> { //~^ ERROR: struct takes 2 lifetime arguments but 3 lifetime arguments were supplied self.bar().map_err(|()| foo.acc(self))?; //~^ ERROR: explicit lifetime required in the type of `foo` Ok(()) } fn bar(&self) -> Result<(), &'a ()> { todo!() } } fn main() {}