Module std::slice1.0.0[][src]

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!("{} is a number!", n);
}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

Chunks

An iterator over a slice in (non-overlapping) chunks (chunk_size elements at a time).

ChunksMut

An iterator over a slice in (non-overlapping) mutable chunks (chunk_size elements at a time). When the slice len is not evenly divided by the chunk size, the last slice of the iteration will be the remainder.

Iter

Immutable slice iterator

IterMut

Mutable slice iterator.

RSplit

An iterator over subslices separated by elements that match a predicate function, starting from the end of the slice.

RSplitMut

An iterator over the subslices of the vector which are separated by elements that match pred, starting from the end of the slice.

RSplitN

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.

RSplitNMut

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.

Split

An iterator over subslices separated by elements that match a predicate function.

SplitMut

An iterator over the subslices of the vector which are separated by elements that match pred.

SplitN

An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits.

SplitNMut

An iterator over subslices separated by elements that match a predicate function, limited to a given number of splits.

Windows

An iterator over overlapping subslices of length size.

ExactChunks [
Experimental
]

An iterator over a slice in (non-overlapping) chunks (chunk_size elements at a time).

ExactChunksMut [
Experimental
]

An iterator over a slice in (non-overlapping) mutable chunks (chunk_size elements at a time). When the slice len is not evenly divided by the chunk size, the last up to chunk_size-1 elements will be omitted.

Traits

SliceConcatExt [
Experimental
]

An extension trait for concatenating slices

SliceIndex [
Experimental
]

A helper trait used for indexing operations.

Functions

from_mut

Converts a reference to T into a slice of length 1 (without copying).

from_raw_parts

Forms a slice from a pointer and a length.

from_raw_parts_mut

Performs the same functionality as from_raw_parts, except that a mutable slice is returned.

from_ref

Converts a reference to T into a slice of length 1 (without copying).