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:
CloneEq,Ord- for slices whose element type areEqorOrd.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).