Я пытаюсь использовать шаблон с итераторами в Rust и падать где-то, очевидно, просто.
Я хотел бы выполнить итерацию через контейнер и найти элемент с предикатом [A] (простой), но затем с нетерпением жду другого предиката и получить это значение [B] и использовать [B] для мутации [A] в в некотором роде. В этом случае [A] является изменяемым и [B] может быть неизменным; это не имеет никакого значения для меня, только для проверки чека (правильно).
Это поможет понять это с помощью простого сценария, поэтому я добавил небольшой фрагмент, чтобы люди могли увидеть проблему/попытку. Я играл с itertools и ломал в for/while петли, хотя я хочу оставаться как можно более идиоматичным.
Глубокий пример сценария
Найдите четное число, найдите следующее число, которое делится на 3 и добавьте к исходному номеру.
#[allow(unused)]
fn is_div_3(num: &u8) -> bool {
num % 3 == 0
}
fn main() {
let mut data: Vec<u8> = (0..100).collect();
let count = data.iter_mut()
.map(|x| {
if *x % 2 == 0 {
// loop through numbers forward to next is_div_3,
// then x = x + that number
}
true
})
.count();
println!("data {:?}, count was {} ", data, count);
}