e336fe80d2
The anonymous future returned from an `async fn` captures all input lifetimes. This was not being taken into account. See https://github.com/rust-lang/rfcs/blob/master/text/2394-async_await.md#lifetime-capture-in-the-anonymous-future
99 lines
3.7 KiB
Plaintext
99 lines
3.7 KiB
Plaintext
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:8:1
|
|
|
|
|
LL | fn fut() -> impl Future<Output = i32> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: `-D clippy::manual-async-fn` implied by `-D warnings`
|
|
help: make the function `async` and return the output of the future directly
|
|
|
|
|
LL | async fn fut() -> i32 {
|
|
| ^^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn fut() -> impl Future<Output = i32> { 42 }
|
|
| ^^^^^^
|
|
|
|
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:12:1
|
|
|
|
|
LL | fn empty_fut() -> impl Future<Output = ()> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: make the function `async` and remove the return type
|
|
|
|
|
LL | async fn empty_fut() {
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn empty_fut() -> impl Future<Output = ()> {}
|
|
| ^^
|
|
|
|
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:16:1
|
|
|
|
|
LL | fn core_fut() -> impl core::future::Future<Output = i32> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: make the function `async` and return the output of the future directly
|
|
|
|
|
LL | async fn core_fut() -> i32 {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn core_fut() -> impl core::future::Future<Output = i32> { 42 }
|
|
| ^^^^^^
|
|
|
|
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:38:5
|
|
|
|
|
LL | fn inh_fut() -> impl Future<Output = i32> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: make the function `async` and return the output of the future directly
|
|
|
|
|
LL | async fn inh_fut() -> i32 {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn inh_fut() -> impl Future<Output = i32> {
|
|
LL | // NOTE: this code is here just to check that the indentation is correct in the suggested fix
|
|
LL | let a = 42;
|
|
LL | let b = 21;
|
|
LL | if a < b {
|
|
LL | let c = 21;
|
|
...
|
|
|
|
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:73:1
|
|
|
|
|
LL | fn elided(_: &i32) -> impl Future<Output = i32> + '_ {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: make the function `async` and return the output of the future directly
|
|
|
|
|
LL | async fn elided(_: &i32) -> i32 {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn elided(_: &i32) -> impl Future<Output = i32> + '_ { 42 }
|
|
| ^^^^^^
|
|
|
|
error: this function can be simplified using the `async fn` syntax
|
|
--> $DIR/manual_async_fn.rs:82:1
|
|
|
|
|
LL | fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> impl Future<Output = i32> + 'a + 'b {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: make the function `async` and return the output of the future directly
|
|
|
|
|
LL | async fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> i32 {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
help: move the body of the async block to the enclosing function
|
|
|
|
|
LL | fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> impl Future<Output = i32> + 'a + 'b { 42 }
|
|
| ^^^^^^
|
|
|
|
error: aborting due to 6 previous errors
|
|
|