我正在尝试实现一个同时逐步执行两个迭代器的函数,为每对调用一个函数.此回调可以通过返回(bool, bool)元组来控制每个步骤中哪个迭代器前进.由于迭代器在我的用例中引用了一个缓冲区,它们无法实现Iteratorstdlib中的特征,而是通过一个next_ref函数来使用,该函数与之相同Iterator::next,但需要额外的生命周期参数.
// An iterator-like type, that returns references to itself
// in next_ref
struct RefIter {
value: u64
}
impl RefIter {
fn next_ref<'a>(&'a mut self) -> Option<&'a u64> {
self.value += 1;
Some(&self.value)
}
}
// Iterate over two RefIter simultaneously and call a callback
// for each pair. The callback returns a tuple of bools
// that indicate which iterators should be advanced.
fn each_zipped<F>(mut iter1: RefIter, mut iter2: …Run Code Online (Sandbox Code Playgroud)