Практика на свой итератор в Rust
Дана структура:
struct Count {
n: i32,
end: i32,
}
Реализуйте обход от n до end
не включая верхнюю границу. Выведите
числа для Count { n: 2, end: 5 }
в цикле for.
Дана структура:
struct Down {
v: i32,
floor: i32,
}
Сделайте обход, который уменьшает v
на единицу, пока оно не станет меньше
floor. Элемент i32. Пройдите
вручную через match и напечатайте
значения для Down { v: 3, floor: 0 }.
Дана структура:
struct PairGen {
a: i32,
b: i32,
turn: bool,
}
Чередуйте выдачу a и b,
пока оба не будут отданы по одному разу,
затем завершите обход. Связанный тип
i32. Выведите оба числа для
PairGen { a: 7, b: 9, turn: true }.
Даны структуры:
struct Count {
n: i32,
end: i32,
}
struct Triple<I> {
inner: I,
}
Напишите адаптер Triple, который
умножает каждый элемент внутреннего
обхода на три. Проверьте на счетчике
от нуля до трех и выведите все значения.
Дана структура:
struct Skip<I> {
inner: I,
left: u32,
}
Пропустите первые left элементов
внутреннего обхода с типом i32,
затем отдавайте остальные без изменений.
Свяжите со своим счетчиком и покажите
вывод при left: 1.
Скажите, чем свой адаптер отличается от готовых методов цепочки у стандартного обхода, если нужно лишь умножить число на константу из поля структуры.