lazy_prime_sieve/
lib.rs

1#![doc = include_str!("../README.md")]
2
3pub mod sieve;
4pub mod source;
5
6/// Returns an Iterator of prime numbers.
7///
8/// This function internally invokes a [sieve::GenuineSieve]
9/// with a [source::SpinWheel] source.
10pub fn primes() -> impl Iterator<Item = u64> {
11    [2, 3, 5, 7]
12        .iter()
13        .cloned()
14        .chain(sieve::GenuineSieve::with_source(
15            source::SpinWheel::default(),
16        ))
17}
18
19#[cfg(test)]
20mod tests {
21    use crate::{primes, sieve::test::PRIMES_100};
22
23    #[test]
24    fn primes_100() {
25        assert!(primes()
26            .take(100)
27            .eq(PRIMES_100.iter().cloned().map(|x| x as u64)));
28    }
29}