Function core::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)));