[][src]Function array_tools::try_init_from_iterator

pub fn try_init_from_iterator<T, A, I>(iter: I) -> Option<A> where
    A: FixedSizeArray<T>,
    I: Iterator<Item = T>, 

Attempts to create instance of array from iterator.

  • If iterator yields not enough items to fill array, this function returns None.
  • If iterator yields enough items, this function returns Some(array).
  • If iterator yields excessive items, this function only takes number of items enough to fill array.

Panics

  • Only if iterator does.

Examples

Not enough items case.

use array_tools::try_init_from_iterator;

let mut iter = (0..4);

let maybe_array: Option<[u64; 5]> = try_init_from_iterator(iter.by_ref());

assert_eq!(maybe_array, None);
assert_eq!(iter.next(), None);

Enough items case.

use array_tools::try_init_from_iterator;

let mut iter = (0..5);

let maybe_array: Option<[u64; 5]> = try_init_from_iterator(iter.by_ref());

assert_eq!(maybe_array, Some([0, 1, 2, 3, 4]));
assert_eq!(iter.next(), None);

Excessive items case.

use array_tools::try_init_from_iterator;

let mut iter = (0..7);

let maybe_array: Option<[u32; 5]> = try_init_from_iterator(iter.by_ref());

assert_eq!(maybe_array, Some([0, 1, 2, 3, 4]));
assert_eq!(iter.next(), Some(5));
assert_eq!(iter.next(), Some(6));
assert_eq!(iter.next(), None);