Function std::result::collect[src]
pub fn collect<T, E, Iter: Iterator<Result<T, E>>, V: FromIterator<T>>(iter: Iter) -> Result<V, E>
Takes each element in the Iterator: if it is an Err, no further
elements are taken, and the Err is returned. Should no Err occur, a
vector containing the values of each Result is returned.
Here is an example which increments every integer in a vector, checking for overflow:
fn main() { use std::result; use std::uint; let v = vec!(1u, 2u); let res: Result<Vec<uint>, &'static str> = result::collect(v.iter().map(|x: &uint| if *x == uint::MAX { Err("Overflow!") } else { Ok(x + 1) } )); assert!(res == Ok(vec!(2u, 3u))); }use std::result; use std::uint; let v = vec!(1u, 2u); let res: Result<Vec<uint>, &'static str> = result::collect(v.iter().map(|x: &uint| if *x == uint::MAX { Err("Overflow!") } else { Ok(x + 1) } )); assert!(res == Ok(vec!(2u, 3u)));