diff options
| author | Josh Stone <jistone@redhat.com> | 2019-04-05 14:51:07 -0700 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2019-04-05 14:51:07 -0700 |
| commit | 0730a01c5ca3b0e8760d72a05c47d4199bd64728 (patch) | |
| tree | 5af6502b9735c82450876e518ccfce9fd977debf /src/libstd | |
| parent | acd8dd6a50d505057a7d7ad8d0d7a4c2bd274200 (diff) | |
| download | rust-0730a01c5ca3b0e8760d72a05c47d4199bd64728.tar.gz rust-0730a01c5ca3b0e8760d72a05c47d4199bd64728.zip | |
Use for_each to extend collections
This updates the `Extend` implementations to use `for_each` for many collections: `BinaryHeap`, `BTreeMap`, `BTreeSet`, `LinkedList`, `Path`, `TokenStream`, `VecDeque`, and `Wtf8Buf`. Folding with `for_each` enables better performance than a `for`-loop for some iterators, especially if they can just forward to internal iterators, like `Chain` and `FlatMap` do.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/path.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys_common/wtf8.rs | 4 |
2 files changed, 2 insertions, 6 deletions
diff --git a/src/libstd/path.rs b/src/libstd/path.rs index 71e82f0a9b0..1bbda9b5bcb 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1551,9 +1551,7 @@ impl<P: AsRef<Path>> iter::FromIterator<P> for PathBuf { #[stable(feature = "rust1", since = "1.0.0")] impl<P: AsRef<Path>> iter::Extend<P> for PathBuf { fn extend<I: IntoIterator<Item = P>>(&mut self, iter: I) { - for p in iter { - self.push(p.as_ref()) - } + iter.into_iter().for_each(move |p| self.push(p.as_ref())); } } diff --git a/src/libstd/sys_common/wtf8.rs b/src/libstd/sys_common/wtf8.rs index 7fe1818291e..f17020de44e 100644 --- a/src/libstd/sys_common/wtf8.rs +++ b/src/libstd/sys_common/wtf8.rs @@ -388,9 +388,7 @@ impl Extend<CodePoint> for Wtf8Buf { let (low, _high) = iterator.size_hint(); // Lower bound of one byte per code point (ASCII only) self.bytes.reserve(low); - for code_point in iterator { - self.push(code_point); - } + iterator.for_each(move |code_point| self.push(code_point)); } } |
