範囲型 (RangeBounds トレイトを実装する型) には Iterator として機能するものがある。
next メソッドを呼ぶと、開始端がインクリメントされ、直前の開始端が戻される。
対象となる型には以下の条件が必要。
範囲端を表す型が Step トレイトに適合。
範囲の開始点を持つ。
つまり、Range, RangeFrom, RangeInclusive が対象。
つまり、RangeTo, RangeToInclusive, RangeFull は対象外。
以下では、Range 構造体をイテレータとして直接操作している。
fn main() {
let mut range = 3..6;
assert_eq!(range.next(), Some(3));
assert_eq!(range, 4..6);
}