rust/tests/ui/async-await/issues/issue-64477-2.rs
2023-10-20 21:14:01 +00:00

23 lines
705 B
Rust

// 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();
}