error: future cannot be sent between threads safely --> $DIR/issue-64130-4-async-move.rs:15:17 | LL | pub fn foo() -> impl Future + Send { | ^^^^^^^^^^^^^^^^^^ future created by async block is not `Send` ... LL | / async move { LL | | match client.status() { LL | | 200 => { LL | | let _x = get().await; ... | LL | | } LL | | } | |_____- this returned value is of type `impl std::future::Future` | = help: the trait `std::marker::Sync` is not implemented for `(dyn std::any::Any + std::marker::Send + 'static)` note: future is not `Send` as this value is used across an await --> $DIR/issue-64130-4-async-move.rs:21:26 | LL | match client.status() { | ------ has type `&Client` which is not `Send` LL | 200 => { LL | let _x = get().await; | ^^^^^^^^^^^ await occurs here, with `client` maybe used later ... LL | } | - `client` is later dropped here help: consider moving this into a `let` binding to create a shorter lived borrow --> $DIR/issue-64130-4-async-move.rs:19:15 | LL | match client.status() { | ^^^^^^^^^^^^^^^ = note: the return type of a function must have a statically known size error: aborting due to previous error