Module std::slice

1.0.0 · source · []
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"];
Run

Slices 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]);
Run

Here 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:

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!");
}
Run

The mutable slice yields mutable references to the elements:

let mut scores = [7, 8, 9];
for score in &mut scores[..] {
    *score += 1;
}
Run

This 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

ArrayChunksExperimental

An iterator over a slice in (non-overlapping) chunks (N elements at a time), starting at the beginning of the slice.

ArrayChunksMutExperimental

An iterator over a slice in (non-overlapping) mutable chunks (N elements at a time), starting at the beginning of the slice.

ArrayWindowsExperimental

A windowed iterator over a slice in overlapping chunks (N elements at a time), starting at the beginning of the slice

GroupByExperimental

An iterator over slice in (non-overlapping) chunks separated by a predicate.

GroupByMutExperimental

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

ConcatExperimental

Helper trait for [T]::concat.

JoinExperimental

Helper trait for [T]::join

A helper trait used for indexing operations.

Functions

rangeExperimental

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).