error[E0700]: hidden type for `impl Future<Output = impl Sized>` captures lifetime that does not appear in bounds
  --> $DIR/nested-return-type4.rs:4:5
   |
LL | fn test<'s: 's>(s: &'s str) -> impl std::future::Future<Output = impl Sized> {
   |         --                     --------------------------------------------- opaque type defined here
   |         |
   |         hidden type `[async block@$DIR/nested-return-type4.rs:4:5: 4:31]` captures the lifetime `'s` as defined here
LL |     async move { let _s = s; }
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: to declare that `impl Future<Output = impl Sized>` captures `'s`, you can add an explicit `'s` lifetime bound
   |
LL | fn test<'s: 's>(s: &'s str) -> impl std::future::Future<Output = impl Sized> + 's {
   |                                                                              ++++
help: to declare that `impl Sized` captures `'s`, you can add an explicit `'s` lifetime bound
   |
LL | fn test<'s: 's>(s: &'s str) -> impl std::future::Future<Output = impl Sized + 's> {
   |                                                                             ++++

error: aborting due to previous error

For more information about this error, try `rustc --explain E0700`.
