-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement 2024-edition lifetime capture rules RFC #116952
Implement 2024-edition lifetime capture rules RFC #116952
Conversation
@@ -0,0 +1,14 @@ | |||
// known-bug: unknown |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can file a bug and link it here once the RFC lands.
@rustbot labels -S-blocked The RFC has landed, so this can now move forward. |
08a39a6
to
1ed7ebb
Compare
r? compiler |
fn_kind.expect("expected RPITs to be lowered with a FnKind"), | ||
FnDeclKind::Impl | FnDeclKind::Trait | ||
) || self.tcx.features().lifetime_capture_rules_2024 | ||
|| span.at_least_rust_2024() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to the RFC:
The stabilization of the 2024 lifetime capture rules in this RFC is contingent on the stabilization of TAIT or some other solution for precise capturing that will allow all code that is allowed under Rust 2021 to be expressed, in some cases with syntactic changes, in Rust 2024.
So until it is stabilized, the feature should be mandatory, even for edition 2024:
|| span.at_least_rust_2024() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reverted
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The RFC says that we're doing this in Rust 2024. It would make sense to me for this to land in Rust 2024 in nightly without a feature flag.
It does have a dependency, as noted. So if we run into a wall, it would need to be reverted and pulled out of Rust 2024 before stabilization. But that's true of many things we have penciled in for Rust 2024. There are various walls that we could run into and need to pull out other things. This RFC is just very specific about what that wall is.
We're fairly committed to this being stabilized in Rust 2024, so it's likely we'll find a way to avoid it running into this wall. If we fail at that, then we'll need to revert this. But it's better for now to just plan for this going in.
19ce264
to
52143ff
Compare
@TaKO8Ki: Do you have a chance to look at this? |
@compiler-errors I missed it. I will take a look at it! |
Looks good to me. @bors r+ |
…ules_2024, r=TaKO8Ki Implement 2024-edition lifetime capture rules RFC Implements rust-lang/rfcs#3498.
…ules_2024, r=TaKO8Ki Implement 2024-edition lifetime capture rules RFC Implements rust-lang/rfcs#3498.
@bors r- |
52143ff
to
803772e
Compare
@compiler-errors is the
S-waiting-on-author
|
woops no, just forgot to re-approve @bors r=TaKO8Ki |
☀️ Test successful - checks-actions |
Finished benchmarking commit (b906831): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)This benchmark run did not return any relevant results for this metric. CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 668.664s -> 668.148s (-0.08%) |
Update Rust toolchain from nightly-2023-12-10 to nightly-2023-12-11 without any other source changes. This is an automatically generated pull request. If any of the CI checks fail, manual intervention is required. In such a case, review the changes at https://github.com/rust-lang/rust from rust-lang@06e02d5 up to rust-lang@d86d65b. The log for this commit range is: rust-lang@d86d65bbc1 Auto merge of rust-lang#118368 - GuillaumeGomez:env-flag, r=Nilstrieb rust-lang@ec4176167b Auto merge of rust-lang#118703 - Kobzol:bootstrap-config-unused, r=onur-ozkan rust-lang@f1c5558edc Add ChangeInfo record rust-lang@ccbd88dc83 Remove unused run_dsymutil and gpg_password_file config values rust-lang@6badc0d840 Destructure TOML configs rust-lang@7e452c123c Auto merge of rust-lang#118791 - saethlin:use-immediate-type, r=nikic rust-lang@b9068315db Auto merge of rust-lang#116952 - compiler-errors:lifetime_capture_rules_2024, r=TaKO8Ki rust-lang@befd1eb4ec Auto merge of rust-lang#116278 - Kobzol:bootstrap-lld-mode, r=albertlarsan68,petrochenkov rust-lang@dc2f77aad6 Add (unstable) documentation for `--env` command line option rust-lang@d2b1f94f05 Add feature gate test for `--env` flag rust-lang@37d68093da Add ui tests for `--env` option rust-lang@486e55e547 Implement `--env` compiler flag rust-lang@53031b264e Review fixes rust-lang@84f6130fe3 Auto merge of rust-lang#118692 - surechen:remove_unused_imports, r=petrochenkov rust-lang@4750e9de47 Produce an explicit error when using a self-contained lld, but we don't add it to sysroot rust-lang@ea769dbeb7 Add change tracker entry rust-lang@cbfe6327a1 Do not invoke external lld to figure out thread flags in self-contained mode rust-lang@50865745e1 Update `config.example.toml` rust-lang@40c3d351ad Use MCP510 rust-lang@48c1607bc6 Introduce `LldMode` and generalize parsing of `use-lld` rust-lang@d9f9e67bc1 Refactor rust(do)c linker flags rust-lang@b3c9ffdc77 Add `is_msvc` function rust-lang@c1a3919378 Auto merge of rust-lang#118792 - naglis:fix-mutex-doc-typo, r=workingjubilee rust-lang@42dfac5e08 Auto merge of rust-lang#118788 - compiler-errors:const-pretty, r=fee1-dead rust-lang@61afc9c928 Auto merge of rust-lang#116949 - hamza1311:stablize-arc_unwrap_or_clone, r=dtolnay rust-lang@c71c246876 Auto merge of rust-lang#118550 - cjgillot:filecheck-const-prop, r=Mark-Simulacrum rust-lang@40ae34194c remove redundant imports rust-lang@f7253f2317 Auto merge of rust-lang#118787 - GuillaumeGomez:rollup-fj5wr3q, r=GuillaumeGomez rust-lang@7d50a39763 Fix typo in `std::sync::Mutex` example rust-lang@8cd8d31369 Auto merge of rust-lang#118069 - onur-ozkan:bypass_bootstrap_lock, r=Mark-Simulacrum rust-lang@b0a580112b Use immediate_backend_type when reading from a const alloc rust-lang@afa35e90ef Print constness in TraitPredPrintModifiersAndPath rust-lang@7467c3a45c s/const_effect/host_effect rust-lang@f1bf874fb1 Don't print host effect param in pretty path_generic_args rust-lang@6860654d82 allow bypassing the build directory lock rust-lang@dd234696ed Rollup merge of rust-lang#118782 - jyn514:powershell, r=ChrisDenton rust-lang@034d73d6d7 Rollup merge of rust-lang#118775 - Young-Flash:fix, r=compiler-errors rust-lang@5b9e917b64 Rollup merge of rust-lang#118774 - lcnr:region-refactor-uwu, r=compiler-errors rust-lang@cc821d3ae6 Rollup merge of rust-lang#118747 - Urgau:check-cfg-freebsd-cleanup, r=onur-ozkan rust-lang@83e814f88c Rollup merge of rust-lang#117966 - lxy19980601:safe_compilation_options, r=Mark-Simulacrum rust-lang@2cf54e9f99 use `&` instead of start-process in x.ps1 rust-lang@ef796db5f0 add test for inductive cycle hangs rust-lang@cb6984217f chore: add test case for type with generic rust-lang@0f40b6545d Remove extra check-cfg handled by libc directly rust-lang@803772e81d Enable new capture rules by default on edition 2024 rust-lang@acba7efe1b Add test for implicitly capturing late-bound var with new capture rules rust-lang@0ad160a585 Add lifetime_capture_rules_2024 rust-lang@3f8487a099 Add safe compilation options rust-lang@30a95b7c0a FileCheck while_let_loops. rust-lang@c00068e49f FileCheck tuple_literal_propagation. rust-lang@87522d0007 FileCheck return_place. rust-lang@a12027e128 FileCheck switch_int. rust-lang@19767eb7a6 FileCheck slice_len. rust-lang@3e90c1b434 FileCheck scalar_literal_propagation. rust-lang@f3743aec51 FileCheck repeat. rust-lang@343ef6a9cb FileCheck reify_fn_ptr. rust-lang@6baec3ccc2 FileCheck ref_deref. rust-lang@c8c9207e4c FileCheck read_immutable_static. rust-lang@45dd5d6bf3 FileCheck mutable_variable_unprop_assign. rust-lang@6a8eea8f5b FileCheck mutable_variable_aggregate_partial_read. rust-lang@d91bb5074e FileCheck mutable_variable_no_prop. rust-lang@3e169abc1b FileCheck mutable_variable_aggregate_mut_ref. rust-lang@03c5ad1549 FileCheck mutable_variable_aggregate. rust-lang@ea9f968333 FileCheck mutable_variable. rust-lang@902a3e2e75 FileCheck mult_by_zero. rust-lang@8e9b912c4c FileCheck issue_67019. rust-lang@ce9b1e23a5 FileCheck issue_66971. rust-lang@218d8ccf43 FileCheck inherit_overflow. rust-lang@6086dd6766 FileCheck indirect. rust-lang@bf5d114da8 FileCheck discriminant. rust-lang@043d29b58a FileCheck and rename const_prop_fails_gracefully. rust-lang@7f328d2a44 FileCheck checked_add. rust-lang@e6a1b77cd1 FileCheck cast. rust-lang@b8f2f63931 FileCheck boxes. rust-lang@3fc03948a8 FileCheck boolean_identities. rust-lang@e8e35c8127 FileCheck bad_op_unsafe_oob_for_slices. rust-lang@97f03cb898 FileCheck bad_op_mod_by_zero. rust-lang@0d5bc872a9 FileCheck bad_op_div_by_zero. rust-lang@9f01d9d1b6 FileCheck array_index. rust-lang@6564bac532 FileCheck aggregate. rust-lang@378abbc604 FileCheck address_of_pair. rust-lang@540921e468 Stablize arc_unwrap_or_clone Co-authored-by: celinval <[email protected]>
Implements rust-lang/rfcs#3498.