mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-17 01:13:11 +00:00
Rollup merge of #85801 - WaffleLapkin:master, r=joshtriplett
Add `String::extend_from_within` This PR adds `String::extend_from_within` function under the `string_extend_from_within` feature gate similar to the [`Vec::extend_from_within`] function. ```rust // String pub fn extend_from_within<R>(&mut self, src: R) where R: RangeBounds<usize>; ``` [`Vec::extend_from_within`]: https://github.com/rust-lang/rust/issues/81656
This commit is contained in:
commit
b0f2a4c660
@ -144,6 +144,7 @@
|
||||
#![feature(associated_type_bounds)]
|
||||
#![feature(slice_group_by)]
|
||||
#![feature(decl_macro)]
|
||||
#![feature(bindings_after_at)]
|
||||
// Allow testing this library
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -843,6 +843,42 @@ impl String {
|
||||
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.
|
||||
///
|
||||
/// # Examples
|
||||
|
Loading…
Reference in New Issue
Block a user