【发布时间】:2020-04-10 04:16:43
【问题描述】:
我想与测试用例中的迭代器进行比较。不幸的是,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 行)来进行测试,并且需要使迭代器可变。有没有更好的?
【问题讨论】:
-
为什么我的搜索没有找到这个副本对我来说是个谜。
-
你做了什么样的搜索?
site:stackoverflow.com rust compare iterator发现重复项是我的最佳 Google 结果。另外,请记住,投票是对 post 的反映,而不是用户。否决按钮状态:这个问题没有显示任何研究工作;不清楚或没用;我假设反对者认为这个问题在重复的情况下没有用。 -
因为现在可以找到——也许吧。
how do you compare iterators [rust]在第一页上找不到任何帖子。但是,您对重复项的价值是正确的——它们可以作为现有答案的路标,这就是我们不会投票删除此类问题的原因。 -
@shepmaster 出于同样的原因,它们不应该被否决。我目前受到 stackoverflow 业力系统的激励,自己删除了这个问题。
-
当然,这始终是一种选择。你仍然有几千分,所以理想情况下,一些负分从长远来看不会受到伤害。激励是一件棘手的事情。我希望下次能鼓励您进行更深入的搜索,但这是我的意见(我是 How much research effort is expected of Stack Overflow users? 的信徒)。