OptionResultIntoIterator を実装しているため、Iterator に変換できる。

仕様

Option のイテレータは 0 個か 1 個の要素を走査する。
つまり、None なら 0 個、Some なら 1 個となる。

サンプル

以下では、Option を利用してコレクションに要素を選択的に追加している。


 fn main() {
    let mut nums = vec![];
    nums.extend(filter(0));
    nums.extend(filter(1));
    nums.extend(filter(2));
    assert_eq!(nums, vec![0, 2]);
}

fn filter(arg: i32) -> Option<i32> {
    if arg % 2 == 0 { Some(arg) } else { None }
}