Implement Extend<AsciiChar> for String
This commit is contained in:
parent
73bf7947e9
commit
d566b5db9b
3 changed files with 39 additions and 0 deletions
|
@ -2442,6 +2442,32 @@ impl<'a> Extend<Cow<'a, str>> for String {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[unstable(feature = "ascii_char", issue = "110998")]
|
||||
impl Extend<core::ascii::Char> for String {
|
||||
fn extend<I: IntoIterator<Item = core::ascii::Char>>(&mut self, iter: I) {
|
||||
self.vec.extend(iter.into_iter().map(|c| c.to_u8()));
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn extend_one(&mut self, c: core::ascii::Char) {
|
||||
self.vec.push(c.to_u8());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[unstable(feature = "ascii_char", issue = "110998")]
|
||||
impl<'a> Extend<&'a core::ascii::Char> for String {
|
||||
fn extend<I: IntoIterator<Item = &'a core::ascii::Char>>(&mut self, iter: I) {
|
||||
self.extend(iter.into_iter().cloned());
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn extend_one(&mut self, c: &'a core::ascii::Char) {
|
||||
self.vec.push(c.to_u8());
|
||||
}
|
||||
}
|
||||
|
||||
/// A convenience impl that delegates to the impl for `&str`.
|
||||
///
|
||||
/// # Examples
|
||||
|
|
|
@ -26,3 +26,15 @@ fn test_debug_control() {
|
|||
assert_eq!(want, format!("{chr:?}"), "byte: {byte}");
|
||||
}
|
||||
}
|
||||
|
||||
/// Tests Extend implementation for ascii::Char.
|
||||
#[test]
|
||||
fn test_extend() {
|
||||
let mut s = String::from("abc");
|
||||
s.extend_one(Char::SmallD);
|
||||
assert_eq!(s, String::from("abcd"));
|
||||
|
||||
let mut s = String::from("abc");
|
||||
s.extend(Char::CapitalA..=Char::CapitalC);
|
||||
assert_eq!(s, String::from("abcABC"));
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#![feature(duration_constructors)]
|
||||
#![feature(error_generic_member_access)]
|
||||
#![feature(exact_size_is_empty)]
|
||||
#![feature(extend_one)]
|
||||
#![feature(extern_types)]
|
||||
#![feature(float_minimum_maximum)]
|
||||
#![feature(flt2dec)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue