error[E0106]: missing lifetime specifier --> $DIR/impl-fn-hrtb-bounds.rs:22:38 | LL | fn d() -> impl Fn() -> (impl Debug + '_) { | ^^ expected named lifetime parameter | = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values | LL | fn d() -> impl Fn() -> (impl Debug + 'static) { | ~~~~~~~ error[E0657]: `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` --> $DIR/impl-fn-hrtb-bounds.rs:4:41 | LL | fn a() -> impl Fn(&u8) -> (impl Debug + '_) { | ^^ | note: lifetime declared here --> $DIR/impl-fn-hrtb-bounds.rs:4:19 | LL | fn a() -> impl Fn(&u8) -> (impl Debug + '_) { | ^ error: lifetime may not live long enough --> $DIR/impl-fn-hrtb-bounds.rs:6:9 | LL | |x| x | -- ^ returning this value requires that `'1` must outlive `'2` | || | |return type of closure is impl Debug + '2 | has type `&'1 u8` error[E0657]: `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` --> $DIR/impl-fn-hrtb-bounds.rs:10:52 | LL | fn b() -> impl for<'a> Fn(&'a u8) -> (impl Debug + 'a) { | ^^ | note: lifetime declared here --> $DIR/impl-fn-hrtb-bounds.rs:10:20 | LL | fn b() -> impl for<'a> Fn(&'a u8) -> (impl Debug + 'a) { | ^^ error: lifetime may not live long enough --> $DIR/impl-fn-hrtb-bounds.rs:12:9 | LL | |x| x | -- ^ returning this value requires that `'1` must outlive `'2` | || | |return type of closure is impl Debug + '2 | has type `&'1 u8` error[E0657]: `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` --> $DIR/impl-fn-hrtb-bounds.rs:16:52 | LL | fn c() -> impl for<'a> Fn(&'a u8) -> (impl Debug + '_) { | ^^ | note: lifetime declared here --> $DIR/impl-fn-hrtb-bounds.rs:16:20 | LL | fn c() -> impl for<'a> Fn(&'a u8) -> (impl Debug + '_) { | ^^ error: lifetime may not live long enough --> $DIR/impl-fn-hrtb-bounds.rs:18:9 | LL | |x| x | -- ^ returning this value requires that `'1` must outlive `'2` | || | |return type of closure is impl Debug + '2 | has type `&'1 u8` error: aborting due to 7 previous errors Some errors have detailed explanations: E0106, E0657. For more information about an error, try `rustc --explain E0106`.