Crate generic_array
source · [−]Expand description
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:
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);
Re-exports
pub extern crate typenum;
pub use self::iter::GenericArrayIter;
Modules
Implementation for
arr!
macro.Functional programming with generic sequences
GenericArray
iterator implementation.Useful traits for manipulating sequences of data stored in
GenericArray
sMacros
Macro allowing for easy generation of Generic Arrays.
Example:
let test = arr![u32; 1, 2, 3];
Structs
Struct representing a generic array -
GenericArray<T, N>
works like [T; N]Traits
Trait making
GenericArray
work, marking types to be used as length of an array