Ich baute einen Iterator, der eine unendliche Liste von Primzahlen generiert. Die Typen wie folgt aussehen:Vergleiche Iterator mit (feste Größe) Array
pub struct Primes { … }
impl Iterator for Primes {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> { … }
}
Jetzt will ich testen, ob meine Iterator die richtigen Werte zurückgibt durch die ersten 100 Werte gegen die richtigen sind zu vergleichen:
#[test]
fn first_thousand() {
assert_eq!(
Primes::new().take(100),
first_100_primes
);
}
const first_100_primes: [u32; 100] = [2, 3, …, 541];
Ich weiß nicht, wie man vergleiche diese Werte. Ich habe versucht, einen Ausschnitt (first_100_primes[..]
) zu erstellen, der die Iterator-Werte sammelt, aber ich kann sie nicht vergleichen.
Leider , das IntoIterator-Merkmal wird nur für '[T; N] 'wenn' N <= 32 '. Also ich glaube, es ist nicht dasselbe wie Iteratoren zu vergleichen. – Sebastian
Siehe auch [Gibt es eine integrierte Möglichkeit, zwei Iteratoren zu vergleichen?] (Http://stackoverflow.com/q/30540822/155423) – Shepmaster
'IntoIterator' ist nicht für * any * Array implementiert, vielleicht haben Sie etwas gemeint sonst? In beiden Fällen können Sie [einen Iterator der erwarteten Werte erhalten] (https://play.rust-lang.org/?gist=253547197eb8e7d678a8395602442cf2&version=stable&backtrace=0). – Shepmaster