Is there a built-in way to compare two iterators?

I wrote the following function to compare two stepwise iterators. However, it would be great if I could just reuse something in the standard library.

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)); } 
+5
source share
2 answers

Here Iterator::eq , as well as various other comparison functions ( lt , ne , etc.).

+7
source

The third-party cell itertools has itertools::equal and itertools::assert_equal .

+2
source

All Articles