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).

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.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

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

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

Implementors§