[]Module lea::block::generic_array

This crate implements a structure that can be used as a generic array type. Core Rust array types [T; N] can't be used generically with respect to N, so for example this:

This example deliberately fails to compile
struct Foo<T, N> {
    data: [T; N]
}

won't work.

generic-array exports a GenericArray<T,N> type, which lets the above be implemented as:

use generic_array::{ArrayLength, GenericArray};

struct Foo<T, N: ArrayLength<T>> {
    data: GenericArray<T,N>
}

The ArrayLength<T> trait is implemented by default for unsigned integer types from typenum:

use generic_array::typenum::U5;

struct Foo<N: ArrayLength<i32>> {
    data: GenericArray<i32, N>
}

let foo = Foo::<U5>{data: GenericArray::default()};

For example, GenericArray<T, U5> would work almost like [T; 5]:

use generic_array::typenum::U5;

struct Foo<T, N: ArrayLength<T>> {
    data: GenericArray<T, N>
}

let foo = Foo::<i32, U5>{data: GenericArray::default()};

For ease of use, an arr! macro is provided - example below:

let array = arr![u32; 1, 2, 3];
assert_eq!(array[2], 3);

Modules

arr

Implementation for arr! macro.

functional

Functional programming with generic sequences

iter

GenericArray iterator implementation.

sequence

Useful traits for manipulating sequences of data stored in GenericArrays

typenum

This crate provides type-level numbers evaluated at compile time. It depends only on libcore.

Macros

arr

Macro allowing for easy generation of Generic Arrays. Example: let test = arr![u32; 1, 2, 3];

Structs

GenericArray

Struct representing a generic array - GenericArray<T, N> works like [T; N]

GenericArrayIter

An iterator that moves out of a GenericArray

Traits

ArrayLength

Trait making GenericArray work, marking types to be used as length of an array