範囲型 (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);
}