Skip to content

Commit

Permalink
Rollup merge of rust-lang#41449 - Eh2406:master, r=aturon
Browse files Browse the repository at this point in the history
FromIterator and Extend Cow for String

This is a quick draft to start working on [rust-lang#41351](rust-lang#41351).
I don't think I got the stable attributes correct, but it is good enuf to start a conversation.
  • Loading branch information
frewsxcv authored Apr 29, 2017
2 parents b4d3ed6 + 0e2571b commit 598dad9
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/libcollections/string.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1604,6 +1604,15 @@ impl FromIterator<String> for String {
}
}

#[stable(feature = "herd_cows", since = "1.19.0")]
impl<'a> FromIterator<Cow<'a, str>> for String {
fn from_iter<I: IntoIterator<Item = Cow<'a, str>>>(iter: I) -> String {
let mut buf = String::new();
buf.extend(iter);
buf
}
}

#[stable(feature = "rust1", since = "1.0.0")]
impl Extend<char> for String {
fn extend<I: IntoIterator<Item = char>>(&mut self, iter: I) {
Expand Down Expand Up @@ -1641,6 +1650,15 @@ impl Extend<String> for String {
}
}

#[stable(feature = "herd_cows", since = "1.19.0")]
impl<'a> Extend<Cow<'a, str>> for String {
fn extend<I: IntoIterator<Item = Cow<'a, str>>>(&mut self, iter: I) {
for s in iter {
self.push_str(&s)
}
}
}

/// A convenience impl that delegates to the impl for `&str`
#[unstable(feature = "pattern",
reason = "API not fully fleshed out and ready to be stabilized",
Expand Down

0 comments on commit 598dad9

Please sign in to comment.