我编写了以下函数来比较两个迭代器,逐个元素。但是,如果我可以在标准库中重用某些东西,那就太好了。
fn iter_eq<A, B, T, U>(mut a: A, mut b: B) -> bool
where
A: Iterator<Item = T>,
B: Iterator<Item = U>,
T: PartialEq<U>,
{
loop {
match (a.next(), b.next()) {
(Some(ref a), Some(ref b)) if a == b => continue,
(None, None) => return true,
_ => return false,
}
}
}
fn main() {
let a = vec![1, 2, 3].into_iter();
let b = vec![1, 2, 3].into_iter();
assert!(iter_eq(a, b));
}