Skip to content

Commit

Permalink
Unrolled build for rust-lang#135381
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#135381 - cod10129:vec-splice-doc, r=tgross35

Add an example for `Vec::splice` inserting elements without removing

This example clearly showcases how `splice` can be used to insert multiple elements efficiently at an index into a vector.

Fixes rust-lang#135369.

The added example:

> Using `splice` to insert new items into a vector efficiently at a specific position indicated by an empty range:
> ```rust
> let mut v = vec![1, 5];
> let new = [2, 3, 4];
> v.splice(1..1, new);
> assert_eq!(v, [1, 2, 3, 4, 5]);
> ```

`@rustbot` label A-docs A-collections
  • Loading branch information
rust-timer authored Jan 14, 2025
2 parents e491cae + b11f87a commit 4d9bdcc
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions library/alloc/src/vec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3587,7 +3587,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// with the given `replace_with` iterator and yields the removed items.
/// `replace_with` does not need to be the same length as `range`.
///
/// `range` is removed even if the iterator is not consumed until the end.
/// `range` is removed even if the `Splice` iterator is not consumed before it is dropped.
///
/// It is unspecified how many elements are removed from the vector
/// if the `Splice` value is leaked.
Expand All @@ -3613,8 +3613,18 @@ impl<T, A: Allocator> Vec<T, A> {
/// let mut v = vec![1, 2, 3, 4];
/// let new = [7, 8, 9];
/// let u: Vec<_> = v.splice(1..3, new).collect();
/// assert_eq!(v, &[1, 7, 8, 9, 4]);
/// assert_eq!(u, &[2, 3]);
/// assert_eq!(v, [1, 7, 8, 9, 4]);
/// assert_eq!(u, [2, 3]);
/// ```
///
/// Using `splice` to insert new items into a vector efficiently at a specific position
/// indicated by an empty range:
///
/// ```
/// let mut v = vec![1, 5];
/// let new = [2, 3, 4];
/// v.splice(1..1, new);
/// assert_eq!(v, [1, 2, 3, 4, 5]);
/// ```
#[cfg(not(no_global_oom_handling))]
#[inline]
Expand Down

0 comments on commit 4d9bdcc

Please sign in to comment.