Skip to content

Conversation

Lucretiel
Copy link
Contributor

I noticed that there was a lost opportunity to reuse string buffers in FromIterator<String> and FromIterator<Cow<str>>; updated the implementations to use these. In practice this translates to at least one fewer allocation when using these APIs.

Additionally, rewrote Extend implementations to use iter.for_each, which (supposedly) helps the compiler optimize those loops (because iterator adapters are encouraged to provide optimized implementations of fold and try_fold.

@rust-highfive
Copy link
Contributor

r? @sfackler

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 5, 2018
@Lucretiel
Copy link
Contributor Author

Fixes #51541

@rust-highfive

This comment has been minimized.

@Lucretiel Lucretiel force-pushed the string-extend-optimize branch from f4eba91 to 180dcc3 Compare December 5, 2018 22:51
@rust-highfive

This comment has been minimized.

@sfackler
Copy link
Member

sfackler commented Dec 6, 2018

LGTM other than a quick explanatory comment!

@sfackler
Copy link
Member

sfackler commented Dec 6, 2018

@bors r+ rollup

Thanks!

@bors
Copy link
Collaborator

bors commented Dec 6, 2018

📌 Commit 811a2bf has been approved by sfackler

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 6, 2018
pietroalbini added a commit to pietroalbini/rust that referenced this pull request Dec 6, 2018
…=sfackler

Optimized string FromIterator + Extend impls

I noticed that there was a lost opportunity to reuse string buffers in `FromIterator<String>` and `FromIterator<Cow<str>>`; updated the implementations to use these. In practice this translates to at least one fewer allocation when using these APIs.

Additionally, rewrote `Extend` implementations to use `iter.for_each`, which (supposedly) helps the compiler optimize those loops (because iterator adapters are encouraged to provide optimized implementations of `fold` and `try_fold`.
bors added a commit that referenced this pull request Dec 6, 2018
Rollup of 11 pull requests

Successful merges:

 - #56315 (Rustdoc inline macro reexport)
 - #56332 ([rustdoc] Specific crate search)
 - #56362 (Stabilise exhaustive integer patterns)
 - #56426 (libsyntax_pos: A few tweaks)
 - #56441 (rustbuild: Fix issues with compiler docs)
 - #56446 (pass the parameter environment to `traits::find_associated_item`)
 - #56500 (cleanup: remove static lifetimes from consts)
 - #56525 (Avoid extra copy and syscall in std::env::current_exe)
 - #56528 (Remove unused dependency (rustc_lint -> rustc_mir))
 - #56548 (Optimized string FromIterator + Extend impls)
 - #56553 (Don't print the profiling summary to stdout when -Zprofile-json is set)

Failed merges:

r? @ghost
@bors bors merged commit 811a2bf into rust-lang:master Dec 6, 2018
@Lucretiel Lucretiel deleted the string-extend-optimize branch December 6, 2018 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants