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 Result
s. 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));