array-tools 0.2.10

A little collection of array-related utils aiming to make life easier.
Documentation
use array_tools::{indexed_init_with, ArrayChunk, ArrayChunks, ArrayIntoIterator};
use core::marker::PhantomData;

#[test]
fn into_iterator_test() {
    let array = [1u64, 2, 3, 4];
    let mut into_iter = ArrayIntoIterator::new(array);
    assert_eq!(into_iter.next(), Some(1));
    assert_eq!(into_iter.next(), Some(2));
    assert_eq!(into_iter.next(), Some(3));
    assert_eq!(into_iter.next(), Some(4));
    assert_eq!(into_iter.next(), None);
}

#[test]
fn indexed_init_with_test() {
    let array: [usize; 4] = indexed_init_with(|idx| idx * 2);
    assert_eq!(array, [0usize, 2, 4, 6]);
}

#[test]
fn array_chunks_test() {
    let array = [0u64, 1, 2, 3, 4, 5, 6, 7];
    let mut chunks: ArrayChunks<_, _, [_; 3], [_; 2]> = ArrayChunks::new(array);
    assert_eq!(
        chunks.next(),
        Some(ArrayChunk::Chunk([0u64, 1, 2], PhantomData))
    );
    assert_eq!(
        chunks.next(),
        Some(ArrayChunk::Chunk([3u64, 4, 5], PhantomData))
    );
    assert_eq!(
        chunks.next(),
        Some(ArrayChunk::Stump([6u64, 7], PhantomData))
    );
    assert_eq!(chunks.next(), None);
}