Trait tinyvec::Array

source ·
pub trait Array {
    type Item: Default;

    const CAPACITY: usize;

    // Required methods
    fn as_slice(&self) -> &[Self::Item];
    fn as_slice_mut(&mut self) -> &mut [Self::Item];
    fn default() -> Self;
}
Expand description

A trait for types that are an array.

An “array”, for our purposes, has the following properties:

  • Owns some number of elements.
  • The element type can be generic, but must implement Default.
  • The capacity is fixed at compile time, based on the implementing type.
  • You can get a shared or mutable slice to the elements.

You are generally not expected to need to implement this yourself. It is already implemented for all the major array lengths (0..=32 and the powers of 2 up to 4,096), or for all array lengths with the feature rustc_1_55.

Additional lengths can easily be added upon request.

Safety Reminder

Just a reminder: this trait is 100% safe, which means that unsafe code must not rely on an instance of this trait being correct.

Required Associated Types§

source

type Item: Default

The type of the items in the thing.

Required Associated Constants§

source

const CAPACITY: usize

The number of slots in the thing.

Required Methods§

source

fn as_slice(&self) -> &[Self::Item]

Gives a shared slice over the whole thing.

A correct implementation will return a slice with a length equal to the CAPACITY value.

source

fn as_slice_mut(&mut self) -> &mut [Self::Item]

Gives a unique slice over the whole thing.

A correct implementation will return a slice with a length equal to the CAPACITY value.

source

fn default() -> Self

Create a default-initialized instance of ourself, similar to the Default trait, but implemented for the same range of sizes as Array.

Implementations on Foreign Types§

source§

impl<T: Default> Array for [T; 23]

§

type Item = T

source§

const CAPACITY: usize = 23usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 6]

§

type Item = T

source§

const CAPACITY: usize = 6usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 5]

§

type Item = T

source§

const CAPACITY: usize = 5usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 2]

§

type Item = T

source§

const CAPACITY: usize = 2usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 25]

§

type Item = T

source§

const CAPACITY: usize = 25usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 32]

§

type Item = T

source§

const CAPACITY: usize = 32usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 33]

§

type Item = T

source§

const CAPACITY: usize = 33usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 4096]

§

type Item = T

source§

const CAPACITY: usize = 4_096usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 12]

§

type Item = T

source§

const CAPACITY: usize = 12usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 19]

§

type Item = T

source§

const CAPACITY: usize = 19usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 26]

§

type Item = T

source§

const CAPACITY: usize = 26usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 1024]

§

type Item = T

source§

const CAPACITY: usize = 1_024usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 64]

§

type Item = T

source§

const CAPACITY: usize = 64usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 11]

§

type Item = T

source§

const CAPACITY: usize = 11usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 13]

§

type Item = T

source§

const CAPACITY: usize = 13usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 2048]

§

type Item = T

source§

const CAPACITY: usize = 2_048usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 512]

§

type Item = T

source§

const CAPACITY: usize = 512usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 128]

§

type Item = T

source§

const CAPACITY: usize = 128usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 10]

§

type Item = T

source§

const CAPACITY: usize = 10usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 24]

§

type Item = T

source§

const CAPACITY: usize = 24usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 30]

§

type Item = T

source§

const CAPACITY: usize = 30usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 28]

§

type Item = T

source§

const CAPACITY: usize = 28usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 0]

§

type Item = T

source§

const CAPACITY: usize = 0usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 16]

§

type Item = T

source§

const CAPACITY: usize = 16usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 20]

§

type Item = T

source§

const CAPACITY: usize = 20usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 4]

§

type Item = T

source§

const CAPACITY: usize = 4usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 1]

§

type Item = T

source§

const CAPACITY: usize = 1usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 17]

§

type Item = T

source§

const CAPACITY: usize = 17usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 15]

§

type Item = T

source§

const CAPACITY: usize = 15usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 14]

§

type Item = T

source§

const CAPACITY: usize = 14usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 27]

§

type Item = T

source§

const CAPACITY: usize = 27usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 7]

§

type Item = T

source§

const CAPACITY: usize = 7usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 21]

§

type Item = T

source§

const CAPACITY: usize = 21usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 256]

§

type Item = T

source§

const CAPACITY: usize = 256usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 3]

§

type Item = T

source§

const CAPACITY: usize = 3usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 29]

§

type Item = T

source§

const CAPACITY: usize = 29usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 22]

§

type Item = T

source§

const CAPACITY: usize = 22usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 9]

§

type Item = T

source§

const CAPACITY: usize = 9usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 18]

§

type Item = T

source§

const CAPACITY: usize = 18usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 8]

§

type Item = T

source§

const CAPACITY: usize = 8usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

source§

impl<T: Default> Array for [T; 31]

§

type Item = T

source§

const CAPACITY: usize = 31usize

source§

fn as_slice(&self) -> &[T]

source§

fn as_slice_mut(&mut self) -> &mut [T]

source§

fn default() -> Self

Implementors§