diff options
| author | bors <bors@rust-lang.org> | 2021-11-21 21:20:20 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-11-21 21:20:20 +0000 |
| commit | cebd2dda1d9071f2209079370c412f4ef9ef2b82 (patch) | |
| tree | ff90842dc821a514ae5a8fd9bf429f353eef64cb /compiler/rustc_mir_transform/src/coverage/mod.rs | |
| parent | 65f3f8b220f020e562c5dd848ff7319257a7ba45 (diff) | |
| parent | 66da8faf176cf5fbdd198371f80ff58b3ed50cf9 (diff) | |
| download | rust-cebd2dda1d9071f2209079370c412f4ef9ef2b82.tar.gz rust-cebd2dda1d9071f2209079370c412f4ef9ef2b82.zip | |
Auto merge of #90352 - camsteffen:for-loop-desugar, r=oli-obk
Simplify `for` loop desugar
Basically two intermediate bindings are inlined. I could have left one intermediate binding in place as this would simplify some diagnostic logic, but I think the difference in that regard would be negligible, so it is better to have a minimal HIR.
For checking that the pattern is irrefutable, I added a special case when the `match` is found to be non-exhaustive.
The reordering of the arms is purely stylistic. I don't *think* there are any perf implications.
```diff
match IntoIterator::into_iter($head) {
mut iter => {
$label: loop {
- let mut __next;
match Iterator::next(&mut iter) {
- Some(val) => __next = val,
None => break,
+ Some($pat) => $block,
}
- let $pat = __next;
- $block
}
}
}
```
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/mod.rs')
0 files changed, 0 insertions, 0 deletions
