Function core::option::collect[src]

pub fn collect<T, Iter: Iterator<Option<T>>, V: FromIterator<T>>(iter: Iter) -> Option<V>

Takes each element in the Iterator: if it is None, no further elements are taken, and the None is returned. Should no None occur, a vector containing the values of each Option is returned.

Here is an example which increments every integer in a vector, checking for overflow:

fn main() { use std::option; use std::uint; let v = vec!(1u, 2u); let res: Option<Vec<uint>> = option::collect(v.iter().map(|x: &uint| if *x == uint::MAX { None } else { Some(x + 1) } )); assert!(res == Some(vec!(2u, 3u))); }
use std::option;
use std::uint;

let v = vec!(1u, 2u);
let res: Option<Vec<uint>> = option::collect(v.iter().map(|x: &uint|
    if *x == uint::MAX { None }
    else { Some(x + 1) }
));
assert!(res == Some(vec!(2u, 3u)));