Expand description
A dynamically-sized view into a contiguous sequence, [T]
.
See also the slice primitive type.
Slices are a view into a block of memory represented as a pointer and a length.
// slicing a Vec
let vec = vec![1, 2, 3];
let int_slice = &vec[..];
// coercing an array to a slice
let str_slice: &[&str] = &["one", "two", "three"];
RunSlices are either mutable or shared. The shared slice type is &[T]
,
while the mutable slice type is &mut [T]
, where T
represents the element
type. For example, you can mutate the block of memory that a mutable slice
points to:
let x = &mut [1, 2, 3];
x[1] = 7;
assert_eq!(x, &[1, 7, 3]);
RunHere are some of the things this module contains:
Structs
There are several structs that are useful for slices, such as Iter
, which
represents iteration over a slice.
Trait Implementations
There are several implementations of common traits for slices. Some examples include:
Clone
Eq
,Ord
- for slices whose element type areEq
orOrd
.Hash
- for slices whose element type isHash
.
Iteration
The slices implement IntoIterator
. The iterator yields references to the
slice elements.
let numbers = &[0, 1, 2];
for n in numbers {
println!("{n} is a number!");
}
RunThe mutable slice yields mutable references to the elements:
let mut scores = [7, 8, 9];
for score in &mut scores[..] {
*score += 1;
}
RunThis iterator yields mutable references to the slice’s elements, so while
the element type of the slice is i32
, the element type of the iterator is
&mut i32
.
Structs
An iterator over a slice in (non-overlapping) chunks (N
elements at a
time), starting at the beginning of the slice.
An iterator over a slice in (non-overlapping) mutable chunks (N
elements
at a time), starting at the beginning of the slice.
A windowed iterator over a slice in overlapping chunks (N
elements at a
time), starting at the beginning of the slice
An iterator over slice in (non-overlapping) chunks separated by a predicate.
An iterator over slice in (non-overlapping) mutable chunks separated by a predicate.
An iterator over a slice in (non-overlapping) chunks (chunk_size
elements at a
time), starting at the beginning of the slice.
An iterator over a slice in (non-overlapping) chunks (chunk_size
elements at a
time), starting at the beginning of the slice.
An iterator over a slice in (non-overlapping) mutable chunks (chunk_size
elements at a time), starting at the beginning of the slice.
An iterator over a slice in (non-overlapping) mutable chunks (chunk_size
elements at a time), starting at the beginning of the slice.
An iterator over the escaped version of a byte slice.
Immutable slice iterator
Mutable slice iterator.
An iterator over a slice in (non-overlapping) chunks (chunk_size
elements at a
time), starting at the end of the slice.
An iterator over a slice in (non-overlapping) chunks (chunk_size
elements at a
time), starting at the end of the slice.
An iterator over a slice in (non-overlapping) mutable chunks (chunk_size
elements at a time), starting at the end of the slice.
An iterator over a slice in (non-overlapping) mutable chunks (chunk_size
elements at a time), starting at the end of the slice.
An iterator over subslices separated by elements that match a predicate function, starting from the end of the slice.
An iterator over the subslices of the vector which are separated
by elements that match pred
, starting from the end of the slice.
An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits, starting from the end of the slice.
An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits, starting from the end of the slice.
An iterator over subslices separated by elements that match a predicate function.
An iterator over subslices separated by elements that match a predicate
function. Unlike Split
, it contains the matched part as a terminator
of the subslice.
An iterator over the mutable subslices of the vector which are separated
by elements that match pred
. Unlike SplitMut
, it contains the matched
parts in the ends of the subslices.
An iterator over the mutable subslices of the vector which are separated
by elements that match pred
.
An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits.
An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits.
An iterator over overlapping subslices of length size
.
Traits
Helper trait for [T]::concat
.
A helper trait used for indexing operations.
Functions
Performs the same functionality as from_ptr_range
, except that a
mutable slice is returned.
Forms a slice from a pointer range.
Performs bounds-checking of a range.
Converts a reference to T into a slice of length 1 (without copying).
Forms a slice from a pointer and a length.
Performs the same functionality as from_raw_parts
, except that a
mutable slice is returned.
Converts a reference to T into a slice of length 1 (without copying).