]> git.lizzy.rs Git - rust.git/commit - src/tools/miri
Auto merge of #82162 - cuviper:flat-fold, r=Mark-Simulacrum
authorbors <bors@rust-lang.org>
Thu, 25 Feb 2021 00:36:05 +0000 (00:36 +0000)
committerbors <bors@rust-lang.org>
Thu, 25 Feb 2021 00:36:05 +0000 (00:36 +0000)
commit63bacf14cd06f67171546670f22d8af509c29027
treec2ad0b6a143522c477adfa081c37174116838675
parent1fdadbf13aecd190b277ea2aa1b125d2ed986d55
parentfc150d17b5e705132f0f70595dfc213aa6b564d3
Auto merge of #82162 - cuviper:flat-fold, r=Mark-Simulacrum

Expand FlattenCompat folds

The former `chain`+`chain`+`fold` implementation looked nice from a
functional-programming perspective, but it introduced unnecessary layers
of abstraction on every `flat_map`/`flatten` fold. It's straightforward
to just fold each part in turn, and this makes it look like a simplified
version of the existing `try_fold` implementation.

For the `iter::bench_flat_map*` benchmarks, I get a large improvement in
`bench_flat_map_chain_sum`, from 1,598,473 ns/iter to 499,889 ns/iter,
and the rest are unchanged.