| // Another regression test for #64477. |
| // |
| // In the past, the code generated by `format!` produced temporaries in the surrounding scope that |
| // borrowed the arguments through `&dyn Trait`. These temporaries do not implement `Send`, which |
| // meant that when `format!` was used in an async block, the resulting coroutine was not `Send`. |
| // See https://github.com/rust-lang/rust/issues/64477#issuecomment-534669068 for details |
| // and https://github.com/rust-lang/rust/issues/64477#issuecomment-531882958 for an example. |
| // |
| //@ check-pass |
| //@ edition:2018 |
| |
| async fn foo(_: String) {} |
| |
| fn bar() -> impl Send { |
| async move { |
| foo(format!("{}:{}", 1, 2)).await; |
| } |
| } |
| |
| fn main() { |
| let _ = bar(); |
| } |