Closed
Description
#![feature(nll)]
#![feature(in_band_lifetimes)]
#![feature(impl_header_lifetime_elision)]
struct Foo<'a, 'b> {
x: &'a u32,
y: &'b u32,
}
struct Bar<'b> {
z: &'b u32
}
impl Foo<'_, '_> {
fn take_bar(&mut self, b: Bar<'_>) {
self.y = b.z
}
}
fn main() { }
produces this confusing error:
error[E0621]: explicit lifetime required in the type of `b`
--> src/main.rs:15:9
|
14 | fn take_bar(&mut self, b: Bar<'_>) {
| - consider changing the type of `b` to `Bar<'_>`
15 | self.y = b.z
| ^^^^^^^^^^^^ lifetime `'_` required
I think the problem here is that the "nice region error" code is actually getting in the way of the NLL errors, which are better.