partial-array 0.1.3

Provides potentially partially-filled arrays
Documentation
mod forward {
    use crate::PartialArray;

    #[test]
    fn full() {
        let partial_array: PartialArray<u8, 4> = [0, 1, 2, 3].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next(), Some(0));
        assert_eq!(iter.next(), Some(1));
        assert_eq!(iter.next(), Some(2));
        assert_eq!(iter.next(), Some(3));
        assert_eq!(iter.next(), None);
    }

    #[test]
    fn empty() {
        let partial_array: PartialArray<u8, 4> = [].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next(), None);
    }

    #[test]
    fn partial() {
        let partial_array: PartialArray<u8, 42> = [0, 1, 2].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next(), Some(0));
        assert_eq!(iter.next(), Some(1));
        assert_eq!(iter.next(), Some(2));
        assert_eq!(iter.next(), None);
    }
}

mod reverse {
    use crate::PartialArray;

    #[test]
    fn full() {
        let partial_array: PartialArray<u8, 4> = [0, 1, 2, 3].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next_back(), Some(3));
        assert_eq!(iter.next_back(), Some(2));
        assert_eq!(iter.next_back(), Some(1));
        assert_eq!(iter.next_back(), Some(0));
        assert_eq!(iter.next_back(), None);
    }

    #[test]
    fn empty() {
        let partial_array: PartialArray<u8, 4> = [].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next_back(), None);
    }

    #[test]
    fn partial() {
        let partial_array: PartialArray<u8, 42> = [0, 1, 2].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next_back(), Some(2));
        assert_eq!(iter.next_back(), Some(1));
        assert_eq!(iter.next_back(), Some(0));
        assert_eq!(iter.next_back(), None);
    }
}

mod forward_reverse {
    use crate::PartialArray;

    #[test]
    fn full() {
        let partial_array: PartialArray<u8, 4> = [0, 1, 2, 3].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next_back(), Some(3));
        assert_eq!(iter.next(), Some(0));
        assert_eq!(iter.next_back(), Some(2));
        assert_eq!(iter.next_back(), Some(1));
        assert_eq!(iter.next_back(), None);
        assert_eq!(iter.next(), None);
    }

    #[test]
    fn partial() {
        let partial_array: PartialArray<u8, 42> = [0, 1, 2].iter().copied().collect();
        let mut iter = partial_array.into_iter();
        assert_eq!(iter.next(), Some(0));
        assert_eq!(iter.next_back(), Some(2));
        assert_eq!(iter.next_back(), Some(1));
        assert_eq!(iter.next_back(), None);
        assert_eq!(iter.next(), None);
    }
}