[−][src]Function resultit::flatten_results::transform
pub fn transform<OuterIter, InnerIter, T, Error>(
outer_iter: OuterIter
) -> FlatMap<OuterIter, Chain<Map<Flatten<IntoIter<InnerIter>>, fn(_: T) -> Result<T, Error>>, IntoIter<Result<T, Error>>>, fn(_: Result<InnerIter, Error>) -> Chain<Map<Flatten<IntoIter<InnerIter>>, fn(_: T) -> Result<T, Error>>, IntoIter<Result<T, Error>>>> where
OuterIter: Iterator<Item = Result<InnerIter, Error>> + Sized,
InnerIter: IntoIterator<Item = T>,
Module-level free-standing function analog to flatten_results() that can be called without using the FlattenResults trait. It is more idiomatic to use the iterator adapter and call flatten_results() instead.
For example:
// Vector of results, each of which contains its own vector of numbers. let v: Vec<Result<Vec<i32>, MyError>> = vec![ Ok(vec![1, 2]), Ok(vec![3, 4]), Err(MyError{}), Ok(vec![5, 6]) ]; // Flatten the vector of results. // Propagates the error instead of panicking. let v: Vec<Result<i32, MyError>> = resultit::flatten_results::transform(v.into_iter()) .collect(); println!("{:?}", v); // [Ok(1), Ok(2), Ok(3), Ok(4), Err(MyError), Ok(5), Ok(6)]