iterator adapter
個々のiterator adapterはiteratorを返すだけで何か処理をするわけではない
チェーンした最後のiteratorに対して next()
が呼び出されて初めて処理が実行される
最後に collect()
を呼べば、内部で next()
も実行される
例えばこのコードを書いても何も起きない
rs["earth", "water", "air", "fire"].iter().map(|elt| println!("{}", elt));
map
filter
filter_map
削除もできるmap
クロージャの返り値はOption
Noneなら削除
flat_map
scan
take
take_while
skip
hsのdrop相当
skip_while
hsのdropWhile相当
chain
2つのiteratorを繋げる
enumerate
indexを与える
zip, unzip
hsのzip, unzipと同じ
2つのiteratorを1つのiteratorにする
cycle
いいね

cloned
参照を生成するiteratorに対して、生成された参照から値をクローンして生成するiteratorを返す
by_ref
iteratorに対する可変参照を借用する
peekable
fuse
Noneが来たらNoneを返すようにする
inspect
print debugに使ったりする
チェーンの途中経過を見たりする