Function array_tools::try_init_with_mapped_idx[][src]

pub fn try_init_with_mapped_idx<T, A, F, E>(initializer_fn: F) -> Result<A, E> where
    A: FixedSizeArray<T>,
    F: FnMut(usize) -> Result<T, E>, 

Attempts to initialize array with values obtained by mapping indices.

This function behaves much like init_with_mapped_idx, but unlike init_with_mapped_idx it expects function that returns Results. If Err is received, this function stops immediatly and returns received Err.

Panics

  • Only panics if provided function does.

Examples

use array_tools as art;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
struct MyErr;

let result: Result<[u64; 7], MyErr> = art::try_init_with_mapped_idx(|idx| {
    Ok(idx as u64 * 2)
});

assert_eq!(result, Ok([0, 2, 4, 6, 8, 10, 12]));


let result: Result<[u64; 7], MyErr> = art::try_init_with_mapped_idx(|idx| {
    if idx != 3 {
        Ok(idx as u64 * 2)
    } else {
        Err(MyErr)
    }
});

assert_eq!(result, Err(MyErr));