Trait array_map::Indexable[][src]

pub unsafe trait Indexable {
    type Iter: Iterator<Item = Self>;

    const SIZE: usize;

    fn index(self) -> usize;
fn iter() -> Self::Iter; }
Expand description

Allows mapping from a type to an index

This trait is unsafe because there are a few other requirements that need to be met:

  • The indexes of self need to be contiguous and need to be returned in order from iter()
  • Iter needs to return exactly N items (this is checked in debug mode)

Associated Types

type Iter: Iterator<Item = Self>[src]

The type of Iterator that will be returned by Self::iter()

Associated Constants

const SIZE: usize[src]

The number of items or variants that this type can have.

Required methods

fn index(self) -> usize[src]

Maps self to usize to know which value in the underling array to use

Safety

This value can never be greater than Self::SIZE

All values in 0..SIZE must be returned by some variant of self.

fn iter() -> Self::Iter[src]

An Iterator over all valid values of self

Safety

This iterator must yield exactly Self::SIZE items

Implementors

impl Indexable for bool[src]

const SIZE: usize[src]

type Iter = IntoIter<bool, 2>

fn index(self) -> usize[src]

fn iter() -> Self::Iter[src]

impl Indexable for u8[src]

const SIZE: usize[src]

type Iter = RangeInclusive<Self>

fn index(self) -> usize[src]

fn iter() -> Self::Iter[src]

impl Indexable for u16[src]

const SIZE: usize[src]

type Iter = RangeInclusive<Self>

fn index(self) -> usize[src]

fn iter() -> Self::Iter[src]

impl<const N: u8> Indexable for IndexU8<N>[src]

const SIZE: usize[src]

type Iter = Map<Range<u8>, fn(_: u8) -> Self>

fn index(self) -> usize[src]

fn iter() -> Self::Iter[src]

impl<const N: u16> Indexable for IndexU16<N>[src]

const SIZE: usize[src]

type Iter = Map<Range<u16>, fn(_: u16) -> Self>

fn index(self) -> usize[src]

fn iter() -> Self::Iter[src]