イテレータ
iterator
順番に値を取得するトレイト
配列と異なり、next() メソッドを使って順番に値を取得していく。None を受け取ったらそこで終了。
https://doc.rust-lang.org/std/iter/trait.Iterator.html
利点
サイズを不定長にできる。終わりがわからない、終わりを後から決めたい時に有効。
配列だとランダムアクセスのためにすべての値を保持していなければならないが、その責任がない。「次の値」を返すだけの責任しかない。
欠点
いつ終わるかわからない。(count が取れれば別)
ランダムアクセスが必要な時には取得した値をどこかに保持しなおす必要がある。
イテレータは状態を持ち、呼び出すたびに変動するので、必然的に mut になる。