У меня есть тип с перечисляемым набором значений:
struct MyType(u32);
Я могу определить итератор для набора значений:
struct MyTypeIter {
m: MyType,
}
impl Iterator for MyTypeIter {
type Item = MyType;
fn next(&mut self) -> Option<Self::Item> {
if (self.m).0 < 0xffffffff {
(self.m).0 += 1;
Some(MyType((self.m).0 - 1))
} else {
None
}
}
}
impl MyTypeIter {
fn new() -> MyTypeIter {
MyTypeIter { m: MyType(0) }
}
}
Действительно ли это канонический способсделай это?Что делать, если у нас есть несколько естественных порядков (например, перебирая перестановки или комбинации в порядке лекс / коллекс)?