rust/src
Matthias Krüger 536fc22917
Rollup merge of #119978 - compiler-errors:async-closure-captures, r=oli-obk
Move async closure parameters into the resultant closure's future eagerly

Move async closure parameters into the closure's resultant future eagerly.

Before, we used to desugar `async |p1, p2, ..| { body }` as `|p1, p2, ..| { || async { body } }`. Now, we desugar the above like `|p1, p2, ..| { async move { let p1 = p1; let p2 = p2; ... body } }`. This mirrors the same desugaring that `async fn` does with its parameter types, and the compiler literally uses the same code via a shared helper function.

This removes the necessity for E0708, since now expressions like `async |x: i32| { x }` will not give you confusing borrow errors.

This does *not* fix the case where async closures have self-borrows. This will come with a general implementation of async closures, which is still in the works.

r? oli-obk
2024-01-18 10:34:18 +01:00
..
bootstrap Consistently unset RUSTC_BOOTSTRAP when compiling bootstrap 2024-01-15 10:05:50 -08:00
ci Add debug info for macOS CI actions 2024-01-10 10:54:46 -08:00
doc Auto merge of #118708 - davidtwco:target-tier-assembly-test, r=Mark-Simulacrum 2024-01-17 16:18:28 +00:00
etc Auto merge of #119654 - onur-ozkan:bump-dependencies, r=clubby789 2024-01-11 10:46:43 +00:00
librustdoc Add PatKind::Err 2024-01-17 03:14:16 +01:00
llvm-project@700fbf978e Update LLVM submodule 2024-01-10 09:35:29 +01:00
rustdoc-json-types Add is_object_safe information for traits in JSON output 2023-12-23 11:43:31 +01:00
tools Rollup merge of #119978 - compiler-errors:async-closure-captures, r=oli-obk 2024-01-18 10:34:18 +01:00
README.md Remove stale reference to the test suite location 2023-01-13 11:49:06 +00:00
stage0.json bump stage0 2023-12-22 11:04:31 +01:00
version bump version number to 1.77.0 2023-12-21 10:58:56 +01:00

This directory contains some source code for the Rust project, including:

  • The bootstrapping build system
  • Various submodules for tools, like cargo, tidy, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.