about summary refs log tree commit diff
path: root/compiler/rustc_data_structures/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-02-17 20:18:54 +0000
committerbors <bors@rust-lang.org>2024-02-17 20:18:54 +0000
commit6672c16afcd4db8acdf08a6984fd4107bf07632c (patch)
tree069eb81740230dc0ecc830c8683b789524eddfa8 /compiler/rustc_data_structures/src
parentcabdf3ad257693aa79ffcc4b7dd1fdab41dc209e (diff)
parentc36ae932f901d452e78e1dd69400f6b2169c8fa7 (diff)
downloadrust-6672c16afcd4db8acdf08a6984fd4107bf07632c.tar.gz
rust-6672c16afcd4db8acdf08a6984fd4107bf07632c.zip
Auto merge of #121204 - cuviper:flatten-one-shot, r=the8472
Specialize flattening iterators with only one inner item

For iterators like `Once` and `option::IntoIter` that only ever have a
single item at most, the front and back iterator states in `FlatMap` and
`Flatten` are a waste, as they're always consumed already. We can use
specialization for these types to simplify the iterator methods.

It's a somewhat common pattern to use `flatten()` for options and
results, even recommended by [multiple][1] [clippy][2] [lints][3]. The
implementation is more efficient with `filter_map`, as mentioned in
[clippy#9377], but this new specialization should close some of that
gap for existing code that flattens.

[1]: https://rust-lang.github.io/rust-clippy/master/#filter_map_identity
[2]: https://rust-lang.github.io/rust-clippy/master/#option_filter_map
[3]: https://rust-lang.github.io/rust-clippy/master/#result_filter_map
[clippy#9377]: https://github.com/rust-lang/rust-clippy/issues/9377
Diffstat (limited to 'compiler/rustc_data_structures/src')
0 files changed, 0 insertions, 0 deletions