Skip to content

Commit 4e9a021

Browse files
committed
Add FromIterator impls for ascii::Chars to Strings
1 parent 52bf0cf commit 4e9a021

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

library/alloc/src/string.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2373,6 +2373,26 @@ impl<'a> FromIterator<Cow<'a, str>> for String {
23732373
}
23742374
}
23752375

2376+
#[cfg(not(no_global_oom_handling))]
2377+
#[unstable(feature = "ascii_char", issue = "110998")]
2378+
impl FromIterator<core::ascii::Char> for String {
2379+
fn from_iter<T: IntoIterator<Item = core::ascii::Char>>(iter: T) -> Self {
2380+
let mut buf = String::new();
2381+
buf.extend(iter);
2382+
buf
2383+
}
2384+
}
2385+
2386+
#[cfg(not(no_global_oom_handling))]
2387+
#[unstable(feature = "ascii_char", issue = "110998")]
2388+
impl<'a> FromIterator<&'a core::ascii::Char> for String {
2389+
fn from_iter<T: IntoIterator<Item = &'a core::ascii::Char>>(iter: T) -> Self {
2390+
let mut buf = String::new();
2391+
buf.extend(iter);
2392+
buf
2393+
}
2394+
}
2395+
23762396
#[cfg(not(no_global_oom_handling))]
23772397
#[stable(feature = "rust1", since = "1.0.0")]
23782398
impl Extend<char> for String {
@@ -3200,6 +3220,14 @@ impl<'a> FromIterator<String> for Cow<'a, str> {
32003220
}
32013221
}
32023222

3223+
#[cfg(not(no_global_oom_handling))]
3224+
#[unstable(feature = "ascii_char", issue = "110998")]
3225+
impl<'a> FromIterator<core::ascii::Char> for Cow<'a, str> {
3226+
fn from_iter<T: IntoIterator<Item = core::ascii::Char>>(it: T) -> Self {
3227+
Cow::Owned(FromIterator::from_iter(it))
3228+
}
3229+
}
3230+
32033231
#[stable(feature = "from_string_for_vec_u8", since = "1.14.0")]
32043232
impl From<String> for Vec<u8> {
32053233
/// Converts the given [`String`] to a vector [`Vec`] that holds values of type [`u8`].

0 commit comments

Comments
 (0)