Closed
Description
This is a tracking issue for shortening the scope of temporary lifetimes in if-let
blocks to end before else
. E.g.:
if let Some(x) = ref_cell.write().some_method_that_returns_option() {
} else {
// question is whether the `ref_cell` is still write-locked here;
// currently, it is, but it wouldn't be under this change
}
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
- Implement with a feature gate.
- Do a crater run to analyze impact.
- Decide to stabilize in Rust 2024.
- Stabilize in nightly Rust 2024.
- Implement migration lints.
- N/A: Add documentation to the dev guide.
- See the instructions.
- Add documentation to the reference.
- Add documentation to the edition guide.
- Ensure ready for Rust 2024 stabilization.
Unresolved Questions
TODO.
Related
- Drop order twist of && and || chains #103107
- if let should pre-drop wrt else #103108
- Let chain temporaries should drop before else #103248
- Remove drop order twist of && and || and make them associative #103293
- Broken MIR ICE with let chains #104843
- Rescope temp lifetime in if-let into IfElse with migration lint #107251