974bc455ee
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 |
||
---|---|---|
.. | ||
array_chunks.rs | ||
by_ref_sized.rs | ||
chain.rs | ||
cloned.rs | ||
copied.rs | ||
cycle.rs | ||
enumerate.rs | ||
filter_map.rs | ||
filter.rs | ||
flat_map.rs | ||
flatten.rs | ||
fuse.rs | ||
inspect.rs | ||
intersperse.rs | ||
map_windows.rs | ||
map.rs | ||
mod.rs | ||
peekable.rs | ||
scan.rs | ||
skip_while.rs | ||
skip.rs | ||
step_by.rs | ||
take_while.rs | ||
take.rs | ||
zip.rs |