有比较两个迭代器的内置方法吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有比较两个迭代器的内置方法吗?相关的知识,希望对你有一定的参考价值。

我编写了以下函数来比较两个迭代器,逐个元素。但是,如果我可以在标准库中重用某些东西,那就太好了。

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

Iterator::eq以及各种其他比较功能(ltne等)。

另一答案

第三方箱子itertoolsitertools::equalitertools::assert_equal

以上是关于有比较两个迭代器的内置方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

迭代器生成器装饰器(转)

生成器迭代器的区别?

迭代器生成器装饰器学习总结

c++中迭代器的问题为啥这样会报错?

Python中的“迭代”详解

装饰器生成器迭代器及python中内置函数的使用