Skip to content

Commit

Permalink
Add docs about slicing slices at the ends
Browse files Browse the repository at this point in the history
Closes #60783
  • Loading branch information
AngelicosPhosphoros committed Oct 7, 2024
1 parent baaf3e6 commit cb267b4
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions library/core/src/primitive_docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -862,6 +862,27 @@ mod prim_array {}
/// assert_eq!(x, &[1, 7, 3]);
/// ```
///
/// It is possible to slice empty subranges of slices by using empty ranges (including `slice.len()..slice.len()`):
/// ```
/// let x = [1, 2, 3];
/// let empty = &x[0..0]; // subslice before the first element
/// assert_eq!(empty, &[]);
/// let empty = &x[..0]; // same as &x[0..0]
/// assert_eq!(empty, &[]);
/// let empty = &x[1..1]; // empty subslice in the middle
/// assert_eq!(empty, &[]);
/// let empty = &x[3..3]; // subslice after the last element
/// assert_eq!(empty, &[]);
/// let empty = &x[3..]; // same as &x[3..3]
/// assert_eq!(empty, &[]);
/// ```
///
/// It is not allowed to use subranges that start with lower bound bigger than `slice.len()`:
/// ```should_panic
/// let x = vec![1, 2, 3];
/// let _ = &x[4..4];
/// ```
///
/// As slices store the length of the sequence they refer to, they have twice
/// the size of pointers to [`Sized`](marker/trait.Sized.html) types.
/// Also see the reference on
Expand Down

0 comments on commit cb267b4

Please sign in to comment.