Repository: rust
Issue: Tracking issue for eRFC 2497, "if- and while-let-chains, take 2"
Labels: B-RFC-approved,T-lang,C-tracking-issue,F-let_chains,S-tracking-ready-to-stabilize

This is a tracking issue for the eRFC *"if- and while-let-chains, take 2"* (rust-lang/rfcs#2497).
For the tracking issue for the immediate edition changes, see #53668.

**Steps:**

- [x] Implement the RFC (cc @rust-lang/compiler -- can anyone write up mentoring instructions?)
- [ ] Adjust documentation ([see instructions on forge][doc-guide]) 
- [ ] Formatting for new syntax has been added to the [Style Guide] ([nightly-style-procedure])
- [ ] resolve expr fragment specifier issue ([#86730](https://github.com/rust-lang/rust/issues/86730))
- [x] Initial stabilization PR: #94927, reverted in #100538
- [ ] Second stabilization PR: https://github.com/rust-lang/rust/pull/132833

[stabilization-guide]: https://forge.rust-lang.org/stabilization-guide.html
[doc-guide]: https://forge.rust-lang.org/stabilization-guide.html#updating-documentation
[nightly-style-procedure]: https://github.com/rust-lang/style-team/blob/master/nightly-style-procedure.md 
[Style Guide]: https://github.com/rust-lang/rust/tree/master/src/doc/style-guide

**Unresolved questions:**

- [x] [The final syntax](https://github.com/rust-lang/rfcs/blob/master/text/2497-if-let-chains.md#the-final-syntax)
    - This would benefit from a design note summarizing previous discussions on `let` as a boolean expression, and possibilities of `is` syntax.
- [x] [Should temporary and irrefutable lets without patterns be allowed in some form?](https://github.com/rust-lang/rfcs/blob/master/text/2497-if-let-chains.md#irrefutable-let-bindings-after-the-first-refutable-binding)
- [ ] [Chained `if let`s inside `match` arms](https://github.com/rust-lang/rfcs/blob/master/text/2497-if-let-chains.md#chained-if-lets-inside-match-arms)

**Collected issues:**

- [x] https://github.com/rust-lang/rust/issues/60336
- [x] https://github.com/rust-lang/rust/issues/60707
- [x] https://github.com/rust-lang/rust/issues/60254
- [x] https://github.com/rust-lang/rust/issues/60571
- [x] https://github.com/rust-lang/rust/issues/44990

**Implementation history:**

- https://github.com/rust-lang/rust/pull/59290
- https://github.com/rust-lang/rust/pull/59439
- https://github.com/rust-lang/rust/pull/60225
- https://github.com/rust-lang/rust/pull/59288
- https://github.com/rust-lang/rust/pull/60861
- https://github.com/rust-lang/rust/pull/61988
- https://github.com/rust-lang/rust/pull/79328
- https://github.com/rust-lang/rust/pull/80357
- https://github.com/rust-lang/rust/pull/82308
- https://github.com/rust-lang/rust/pull/88642
- https://github.com/rust-lang/rust/pull/93086
- https://github.com/rust-lang/rust/pull/93213
- https://github.com/rust-lang/rust/pull/97295
- https://github.com/rust-lang/rust/pull/94754
- https://github.com/rust-lang/rust/pull/94974
- https://github.com/rust-lang/rust/pull/95008
- https://github.com/rust-lang/rust/pull/95314

**Unresolved problems**

- [ ] Can we be confident that the implementation is correct and well tested?

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_ASSIGN_START -->

<!-- TRIAGEBOT_ASSIGN_DATA_START$${"user":"c410-f3r"}$$TRIAGEBOT_ASSIGN_DATA_END -->

<!-- TRIAGEBOT_ASSIGN_END -->
<!-- TRIAGEBOT_END -->