diff options
| -rw-r--r-- | src/libcollections/string.rs | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 08ac64778bb..5109261a504 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -768,18 +768,27 @@ impl fmt::Display for FromUtf16Error { #[stable(feature = "rust1", since = "1.0.0")] impl FromIterator<char> for String { - fn from_iter<I: IntoIterator<Item=char>>(iter: I) -> String { + fn from_iter<I: IntoIterator<Item=char>>(iterable: I) -> String { let mut buf = String::new(); - buf.extend(iter); + buf.extend(iterable); buf } } #[stable(feature = "rust1", since = "1.0.0")] impl<'a> FromIterator<&'a str> for String { - fn from_iter<I: IntoIterator<Item=&'a str>>(iter: I) -> String { + fn from_iter<I: IntoIterator<Item=&'a str>>(iterable: I) -> String { let mut buf = String::new(); - buf.extend(iter); + buf.extend(iterable); + buf + } +} + +#[stable(feature = "extend_string", since = "1.4.0")] +impl FromIterator<String> for String { + fn from_iter<I: IntoIterator<Item=String>>(iterable: I) -> String { + let mut buf = String::new(); + buf.extend(iterable); buf } } @@ -798,8 +807,8 @@ impl Extend<char> for String { #[stable(feature = "extend_ref", since = "1.2.0")] impl<'a> Extend<&'a char> for String { - fn extend<I: IntoIterator<Item=&'a char>>(&mut self, iter: I) { - self.extend(iter.into_iter().cloned()); + fn extend<I: IntoIterator<Item=&'a char>>(&mut self, iterable: I) { + self.extend(iterable.into_iter().cloned()); } } @@ -812,6 +821,15 @@ impl<'a> Extend<&'a str> for String { } } +#[stable(feature = "extend_string", since = "1.4.0")] +impl Extend<String> for String { + fn extend<I: IntoIterator<Item=String>>(&mut self, iterable: I) { + for s in iterable { + self.push_str(&s) + } + } +} + /// A convenience impl that delegates to the impl for `&str` impl<'a, 'b> Pattern<'a> for &'b String { type Searcher = <&'b str as Pattern<'a>>::Searcher; |
