1 error[E0106]: missing lifetime specifier
2 --> $DIR/elision.rs:5:70
4 LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
5 | ------------------------------------------------ ^^ expected named lifetime parameter
7 = help: this function's return type contains a borrowed value, but the signature does not say which one of `x`'s 2 lifetimes it is borrowed from
8 help: consider introducing a named lifetime parameter
10 LL | fn f<'a>(x: &'a mut dyn Iterator<Item: Iterator<Item = &'a ()>>) -> Option<&'a ()> { x.next() }
13 error[E0308]: mismatched types
14 --> $DIR/elision.rs:5:79
16 LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
17 | ----------------------------- -------------- ^^^^^^^^ expected `&()`, found type parameter `impl Iterator<Item = &'_ ()>`
19 | | expected `Option<&'static ()>` because of return type
22 = note: expected enum `Option<&'static ()>`
23 found enum `Option<impl Iterator<Item = &'_ ()>>`
25 error: aborting due to 2 previous errors
27 Some errors have detailed explanations: E0106, E0308.
28 For more information about an error, try `rustc --explain E0106`.