The error message for [this example](https://play.rust-lang.org/?gist=6d2e6982214b36054a9716f80335f0c0&version=nightly) seems potentially confusing: ```rust #![feature(dyn_trait)] #![feature(conservative_impl_trait)] #![feature(underscore_lifetimes)] fn a<T>(items: &[T]) -> Box<impl Iterator> { Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime } fn main() { } ``` I get: ``` error[E0621]: explicit lifetime required in the type of `items` --> src/main.rs:5:29 | 5 | fn a<T>(items: &[T]) -> Box<impl Iterator> { | ----- ^^^^^^^^^^^^^ lifetime `'static` required | | | consider changing the type of `items` to `&'static [T]` ``` What's going wrong here is that `impl Iterator` can only capture lifetimes that it names, and this one doesn't name any lifetimes. It can be fixed by changing to `impl Iterator + '_` -- this is probably what we want to suggest? I'm not sure how best to phrase this, suggestions welcome. cc @cramertj @estebank