Add String::extend_from_within
This patch adds `String::extend_from_within` function under the `string_extend_from_within` feature gate similar to the `Vec::extend_from_within` function.
This commit is contained in:
parent
4664725ae0
commit
23f9b92c5e
2 changed files with 37 additions and 0 deletions
|
@ -144,6 +144,7 @@
|
||||||
#![feature(associated_type_bounds)]
|
#![feature(associated_type_bounds)]
|
||||||
#![feature(slice_group_by)]
|
#![feature(slice_group_by)]
|
||||||
#![feature(decl_macro)]
|
#![feature(decl_macro)]
|
||||||
|
#![feature(bindings_after_at)]
|
||||||
// Allow testing this library
|
// Allow testing this library
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -843,6 +843,42 @@ impl String {
|
||||||
self.vec.extend_from_slice(string.as_bytes())
|
self.vec.extend_from_slice(string.as_bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Copies elements from `src` range to the end of the string.
|
||||||
|
///
|
||||||
|
/// ## Panics
|
||||||
|
///
|
||||||
|
/// Panics if the starting point or end point do not lie on a [`char`]
|
||||||
|
/// boundary, or if they're out of bounds.
|
||||||
|
///
|
||||||
|
/// ## Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// #![feature(string_extend_from_within)]
|
||||||
|
/// let mut string = String::from("abcde");
|
||||||
|
///
|
||||||
|
/// string.extend_from_within(2..);
|
||||||
|
/// assert_eq!(string, "abcdecde");
|
||||||
|
///
|
||||||
|
/// string.extend_from_within(..2);
|
||||||
|
/// assert_eq!(string, "abcdecdeab");
|
||||||
|
///
|
||||||
|
/// string.extend_from_within(4..8);
|
||||||
|
/// assert_eq!(string, "abcdecdeabecde");
|
||||||
|
/// ```
|
||||||
|
#[cfg(not(no_global_oom_handling))]
|
||||||
|
#[unstable(feature = "string_extend_from_within", issue = "none")]
|
||||||
|
pub fn extend_from_within<R>(&mut self, src: R)
|
||||||
|
where
|
||||||
|
R: RangeBounds<usize>,
|
||||||
|
{
|
||||||
|
let src @ Range { start, end } = slice::range(src, ..self.len());
|
||||||
|
|
||||||
|
assert!(self.is_char_boundary(start));
|
||||||
|
assert!(self.is_char_boundary(end));
|
||||||
|
|
||||||
|
self.vec.extend_from_within(src);
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns this `String`'s capacity, in bytes.
|
/// Returns this `String`'s capacity, in bytes.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue