error: return type captures more lifetimes than trait definition --> $DIR/signature-mismatch.rs:36:47 | LL | fn async_fn<'a>(&self, buff: &'a [u8]) -> impl Future> + 'a { | -- this lifetime was captured ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: hidden type must only reference lifetimes captured by this impl trait --> $DIR/signature-mismatch.rs:17:40 | LL | fn async_fn(&self, buff: &[u8]) -> impl Future>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: hidden type inferred to be `impl Future> + 'a` error: return type captures more lifetimes than trait definition --> $DIR/signature-mismatch.rs:41:57 | LL | fn async_fn_early<'a: 'a>(&self, buff: &'a [u8]) -> impl Future> + 'a { | -- this lifetime was captured ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: hidden type must only reference lifetimes captured by this impl trait --> $DIR/signature-mismatch.rs:18:57 | LL | fn async_fn_early<'a: 'a>(&self, buff: &'a [u8]) -> impl Future>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: hidden type inferred to be `impl Future> + 'a` error: return type captures more lifetimes than trait definition --> $DIR/signature-mismatch.rs:49:10 | LL | fn async_fn_multiple<'a, 'b>( | -- this lifetime was captured ... LL | ) -> impl Future> + Captures2<'a, 'b> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: hidden type must only reference lifetimes captured by this impl trait --> $DIR/signature-mismatch.rs:20:12 | LL | -> impl Future> + Captures<'a>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: hidden type inferred to be `impl Future> + Captures2<'a, 'b>` error[E0309]: the parameter type `T` may not live long enough --> $DIR/signature-mismatch.rs:58:10 | LL | ) -> impl Future> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `impl Future>` will meet its required lifetime bounds... | note: ...that is required by this bound --> $DIR/signature-mismatch.rs:25:42 | LL | ) -> impl Future> + 'a; | ^^ help: consider adding an explicit lifetime bound... | LL | fn async_fn_reduce_outlive<'a, 'b, T: 'a>( | ++++ error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0309`.