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}