[][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)]