string: Implement FromIterator<&str> and Extend<&str> for String
&str is a "particle" of a string already, see the graphemes iterator, so it seems natural that we should be able to use it with Extend.
This commit is contained in:
parent
d7d5ccf9bb
commit
5ba7c5da62
1 changed files with 21 additions and 0 deletions
|
|
@ -729,6 +729,15 @@ impl FromIterator<char> for String {
|
|||
}
|
||||
}
|
||||
|
||||
#[experimental = "waiting on FromIterator stabilization"]
|
||||
impl<'a> FromIterator<&'a str> for String {
|
||||
fn from_iter<I:Iterator<&'a str>>(iterator: I) -> String {
|
||||
let mut buf = String::new();
|
||||
buf.extend(iterator);
|
||||
buf
|
||||
}
|
||||
}
|
||||
|
||||
#[experimental = "waiting on Extend stabilization"]
|
||||
impl Extend<char> for String {
|
||||
fn extend<I:Iterator<char>>(&mut self, mut iterator: I) {
|
||||
|
|
@ -740,6 +749,18 @@ impl Extend<char> for String {
|
|||
}
|
||||
}
|
||||
|
||||
#[experimental = "waiting on Extend stabilization"]
|
||||
impl<'a> Extend<&'a str> for String {
|
||||
fn extend<I: Iterator<&'a str>>(&mut self, mut iterator: I) {
|
||||
// A guess that at least one byte per iterator element will be needed.
|
||||
let (lower_bound, _) = iterator.size_hint();
|
||||
self.reserve(lower_bound);
|
||||
for s in iterator {
|
||||
self.push_str(s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for String {
|
||||
#[inline]
|
||||
fn eq(&self, other: &String) -> bool { PartialEq::eq(&**self, &**other) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue