diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2020-07-05 16:07:19 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-05 16:07:19 -0700 |
| commit | 5311daa136907146d1bb7408ab603b7f93025f9e (patch) | |
| tree | 50926ceec3b71bc47341d33e3d166ed171659d53 /src/liballoc/string.rs | |
| parent | 2753fab7ce3647033146b07c8b6c9f4856a910b0 (diff) | |
| parent | b4337ab8c387658b7012fa242e429f46c5f31141 (diff) | |
| download | rust-5311daa136907146d1bb7408ab603b7f93025f9e.tar.gz rust-5311daa136907146d1bb7408ab603b7f93025f9e.zip | |
Rollup merge of #72688 - djugei:master, r=Amanieu
added .collect() into String from Box<str> I have not created an rfc, because i felt like this is a very minor change. i have just set a random feature name and rust version as stability attribute, i expect to have to change that, i just don't know what the policy on that is. all guides i could find focused on contributing to the compiler, not contributing to the standard library. drawbacks: more code in the standard library, could be replaced with specialization: base-implementation for AsRef\<str> and specialization for String and Cow. i can write that code if ppl want it. advantages: using "real strings" i.e. Box\<str> is as ergonomic as string slices (&str) and string buffers (String) with iterators.
Diffstat (limited to 'src/liballoc/string.rs')
| -rw-r--r-- | src/liballoc/string.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/liballoc/string.rs b/src/liballoc/string.rs index 13ef94dee23..5b671b41b5b 100644 --- a/src/liballoc/string.rs +++ b/src/liballoc/string.rs @@ -1774,6 +1774,15 @@ impl FromIterator<String> for String { } } +#[stable(feature = "box_str2", since = "1.45.0")] +impl FromIterator<Box<str>> for String { + fn from_iter<I: IntoIterator<Item = Box<str>>>(iter: I) -> String { + let mut buf = String::new(); + buf.extend(iter); + buf + } +} + #[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 { @@ -1842,6 +1851,13 @@ impl<'a> Extend<&'a str> for String { } } +#[stable(feature = "box_str2", since = "1.45.0")] +impl Extend<Box<str>> for String { + fn extend<I: IntoIterator<Item = Box<str>>>(&mut self, iter: I) { + iter.into_iter().for_each(move |s| self.push_str(&s)); + } +} + #[stable(feature = "extend_string", since = "1.4.0")] impl Extend<String> for String { fn extend<I: IntoIterator<Item = String>>(&mut self, iter: I) { |
