【发布时间】:2016-09-09 17:14:07
【问题描述】:
我构建了一个生成无限素数列表的迭代器。类型如下所示:
pub struct Primes { … }
impl Iterator for Primes {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> { … }
}
现在我想通过比较来测试我的迭代器是否返回正确的值 前 100 个值与正确值对比:
#[test]
fn first_thousand() {
assert_eq!(
Primes::new().take(100),
first_100_primes
);
}
const first_100_primes: [u32; 100] = [2, 3, …, 541];
我不知道如何比较这些值。我尝试创建一个切片 (first_100_primes[..]),收集迭代器值,但我似乎无法比较它们。
【问题讨论】:
-
不幸的是,IntoIterator trait 仅在
N <= 32时为[T; N]定义。所以我相信它和比较迭代器是不一样的。 -
IntoIterator没有为 any 数组实现,也许你的意思是别的?不管怎样,你can get an iterator of the expected values。