tinyvec

Trait 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 Constants§

Source

const CAPACITY: usize

The number of slots in the thing.

Required Associated Types§

Source

type Item: Default

The type of the items 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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

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

Source§

const CAPACITY: usize = 0usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 1usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 2usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 3usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 4usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 5usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 6usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 7usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 8usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 9usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 10usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 11usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 12usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 13usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 14usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 15usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 16usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 17usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 18usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 19usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 20usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 21usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 22usize

Source§

type Item = T

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; 23]

Source§

const CAPACITY: usize = 23usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 24usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 25usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 26usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 27usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 28usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 29usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 30usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 31usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 32usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 33usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 64usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 128usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 256usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 512usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 1_024usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 2_048usize

Source§

type Item = T

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]

Source§

const CAPACITY: usize = 4_096usize

Source§

type Item = T

Source§

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

Source§

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

Source§

fn default() -> Self

Implementors§