如何比较迭代器?

时间:2019-12-17 16:05:41

标签: testing rust iterator

我想与测试用例中的迭代器进行比较。不幸的是,assert_eq!不喜欢被传递为迭代器。 一种解决方法如下:

let mut a = 0..5;
let mut b = 0..6;

assert!(a.by_ref().zip(b.by_ref()).all(|(a, b)| a == b));
assert_eq!(a.next(), None);
assert_eq!(b.next(), None);

但是测试需要3(或至少)2行,并且迭代器需要可变。有什么更好的吗?

1 个答案:

答案 0 :(得分:0)

Iterator::eq。我认为这应该是赢家:

<div class="col-lg-10">
    <a href="{{ url 'add_to_cart' slug=item.slug }}" class="btn btn-primary">Add to Cart</a>
</div>

结果是有assert!(a.eq(b));

itertools::assert_equal

虽然不是很漂亮,但这是使用zip_longest的解决方案:

let a = 0..6;
let b = 0..6;

itertools::assert_equal(a, b);