Передача ссылок на рекурсивные вызовы - PullRequest
0 голосов
/ 02 августа 2020

Прав ли я, предполагая, что рекурсивная функция, получающая итератор, невыразима в безопасном 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 это сделать, или мне придется развернуть рекурсию и делать это итеративно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...