2015-05-30 17 views
5

Ho scritto la seguente funzione per confrontare due iteratori, elemento per elemento. Tuttavia, sarebbe bello se potessi riutilizzare qualcosa nella libreria standard.Esiste un modo integrato per confrontare due iteratori?

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)); 
} 

risposta

7

C'è Iterator::eq così come varie altre funzioni di confronto (lt, ne, etc.).

Problemi correlati