Прав ли я, предполагая, что рекурсивная функция, получающая итератор, невыразима в безопасном Rust? Примерно так:
fn rec_fn<'a, I: Iterator<Item = &'a MyItem>>(it: &mut I) -> Foo {
while let Some(x) = it.next() {
if some_condition(x) {
let foo = rec_fn(&mut it);
// use foo
}
// …
}
// …
}
Я не могу передать изменяемую ссылку it
на другой вызов того же fn
, потому что я все еще использую it
to l oop поверх него. Есть ли способ express это сделать, или мне придется развернуть рекурсию и делать это итеративно?