Module std::sliceStable [-] [+] [src]

Utilities for slice manipulation

The slice module contains useful code to help work with slice values. Slices are a view into a block of memory represented as a pointer and a length.

fn main() { // slicing a Vec let vec = vec!(1, 2, 3); let int_slice = vec.as_slice(); // coercing an array to a slice let str_slice: &[&str] = &["one", "two", "three"]; }
// slicing a Vec
let vec = vec!(1, 2, 3);
let int_slice = vec.as_slice();
// coercing an array to a slice
let str_slice: &[&str] = &["one", "two", "three"];

Slices are either mutable or shared. The shared slice type is &[T], while the mutable slice type is &mut[T]. For example, you can mutate the block of memory that a mutable slice points to:

fn main() { let x: &mut[i32] = &mut [1, 2, 3]; x[1] = 7; assert_eq!(x[0], 1); assert_eq!(x[1], 7); assert_eq!(x[2], 3); }
let x: &mut[i32] = &mut [1, 2, 3];
x[1] = 7;
assert_eq!(x[0], 1);
assert_eq!(x[1], 7);
assert_eq!(x[2], 3);

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.

Traits

A number of traits add methods that allow you to accomplish tasks with slices, the most important being SliceExt. Other traits apply only to slices of elements satisfying certain bounds (like Ord).

An example is the slice method which enables slicing syntax [a..b] that returns an immutable "view" into a Vec or another slice from the index interval [a, b):

fn main() { let numbers = [0, 1, 2]; let last_numbers = &numbers[1..3]; // last_numbers is now &[1, 2] }
fn main() {
    let numbers = [0, 1, 2];
    let last_numbers = &numbers[1..3];
    // last_numbers is now &[1, 2]
}

Implementations of other traits

There are several implementations of common traits for slices. Some examples include:

Iteration

The method iter() returns an iteration value for a slice. The iterator yields references to the slice's elements, so if the element type of the slice is isize, the element type of the iterator is &isize.

fn main() { let numbers = [0, 1, 2]; for &x in numbers.iter() { println!("{} is a number!", x); } }
let numbers = [0, 1, 2];
for &x in numbers.iter() {
    println!("{} is a number!", x);
}

Modules

bytes

Operations on [u8].

Structs

Chunks

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

ChunksMut

An iterator over a slice in (non-overlapping) mutable chunks (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.

ElementSwaps

An iterator that yields the element swaps needed to produce a sequence of all possible permutations for an indexed sequence of elements. Each permutation is only a single swap apart.

Iter

Immutable slice iterator

IterMut

Mutable slice iterator.

Permutations

An iterator that uses ElementSwaps to iterate through all possible permutations of a vector.

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.

Traits

AsSlice

Data that is viewable as a slice.

IntSliceExt

Extension methods for slices containing integers.

SliceConcatExt

An extension trait for concatenating slices

SliceExt

Allocating extension methods for slices.

Functions

from_raw_buf

Forms a slice from a pointer and a length.

from_raw_mut_buf

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

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.

mut_ref_slice

Converts a pointer to A into a slice of length 1 (without copying).

ref_slice

Converts a pointer to A into a slice of length 1 (without copying).