-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Open
Labels
A-patternsRelating to patterns and pattern matchingRelating to patterns and pattern matchingB-RFC-approvedBlocker: Approved by a merged RFC but not yet implemented.Blocker: Approved by a merged RFC but not yet implemented.B-unstableBlocker: Implemented in the nightly compiler and unstable.Blocker: Implemented in the nightly compiler and unstable.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-langRelevant to the language teamRelevant to the language team
Description
This is a tracking issue for changes to match ergonomics for the 2024 edition, as described in rust-lang/rfcs#3627.
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Steps
-
mut ref
/mut ref mut
(#![feature(mut_ref)]
) Match ergonomics 2024: implement mutable by-reference bindings #123080- Bikeshed (
ref (mut
/ref mut (mut
?) - Update all pattern diagnostics to ensure they know about this
- Bikeshed (
- Changes to
&
and&mut
patterns (#![feature(ref_pat_eat_one_layer_2024, ref_pat_eat_one_layer_2024_structural)]
) Match ergonomics 2024: Implement eat-one-layer #123512 - Allow
&
patterns to consume&mut
references Match ergonomics 2024: let&
patterns eat&mut
#124567 - Don't reset binding mode on
mut
with edition >= 2024 Match ergonomics 2024:mut
doesn't reset binding mode #123535- Edition migration lint (without rustfix)
- Rustfix Match ergonomics 2024: migration lint #124639
- RFC Match ergonomics 2024 rfcs#3627
- Original design doc: https://hackmd.io/YLKslGwpQOeAyGBayO9mdw.
- N/A: Add documentation to the dev guide.
- See the instructions.
- Stabilize Rule 1C, Rule 2C for Rust 2024.
- Stabilize Rules 3-5 for all editions.
- Add documentation to the reference.
- See the instructions.
- Add documentation to the edition guide.
- Ensure ready for Rust 2024 stabilization.
Tracking for Rust 2024 changes:
Unresolved Questions
mut ref mut
vsref mut (mut
syntax- The HackMD says the reference types should be "compatible", what does this mean and why?
### Implementation history
- [ ] https://github.com/rust-lang/rust/pull/122978
- [ ] https://github.com/rust-lang/rust/pull/123080
- [ ] https://github.com/rust-lang/rust/pull/123311
- [ ] https://github.com/rust-lang/rust/pull/123512
- [ ] https://github.com/rust-lang/rust/pull/123535
- [ ] https://github.com/rust-lang/rust/pull/124047
- [ ] https://github.com/rust-lang/rust/pull/124567
- [ ] https://github.com/rust-lang/rust/pull/124639
- [ ] https://github.com/rust-lang/rfcs/pull/3627
- [ ] https://github.com/rust-lang/rust/issues/125058
- [ ] https://github.com/rust-lang/rust/pull/125084
- [ ] https://github.com/rust-lang/rust/pull/125168
- [ ] https://github.com/rust-lang/rust/pull/127008
- [ ] https://github.com/rust-lang/rust/issues/127257
- [ ] https://github.com/rust-lang/rust/pull/127369
- [ ] https://github.com/rust-lang/rust/issues/127559
- [ ] https://github.com/rust-lang/rust/pull/135237
@rustbot label T-lang A-patterns A-edition-2024
orzogc and antmelnyk
Metadata
Metadata
Assignees
Labels
A-patternsRelating to patterns and pattern matchingRelating to patterns and pattern matchingB-RFC-approvedBlocker: Approved by a merged RFC but not yet implemented.Blocker: Approved by a merged RFC but not yet implemented.B-unstableBlocker: Implemented in the nightly compiler and unstable.Blocker: Implemented in the nightly compiler and unstable.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-langRelevant to the language teamRelevant to the language team