Slice types - The Rust Reference

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

[type.slice]

# Slice types

[type.slice.syntax]

Syntax
SliceType → [ Type ]

[type.slice.intro]

A slice is a dynamically sized type representing a ‘view’ into a sequence of elements of type `T`. The slice type is written as `[T]`.

[type.slice.unsized]

Slice types are generally used through pointer types. For example:

- `&[T]`: a ‘shared slice’, often just called a ‘slice’. It doesn’t own the data it points to; it borrows it.
- `&mut [T]`: a ‘mutable slice’. It mutably borrows the data it points to.
- `Box<[T]>`: a ‘boxed slice’

Examples:

    #![allow(unused)]
    fn main() {
    // A heap-allocated array, coerced to a slice
    let boxed_array: Box<[i32]> = Box::new([1, 2, 3]);

    // A (shared) slice into an array
    let slice: &[i32] = &boxed_array[..];
    }

[type.slice.safe]

All elements of slices are always initialized, and access to a slice is always bounds-checked in safe methods and operators.