我構建了一個迭代器,用於生成無限的素數列表。該類型是這樣的:將迭代器與(固定大小)數組進行比較
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特徵僅爲'[T; N]'如果'N <= 32'。所以我相信它和比較迭代器是不一樣的。 – Sebastian
另請參見[是否有內置的方法來比較兩個迭代器?](http://stackoverflow.com/q/30540822/155423) – Shepmaster
IntoIterator沒有爲任何*數組實現,也許你的意思是其他?無論哪種方式,您[可以獲得預期值的迭代器](https://play.rust-lang.org/?gist=253547197eb8e7d678a8395602442cf2&version=stable&backtrace=0)。 – Shepmaster