// Cargo.toml: rayon = "1"
use rayon::prelude::*;
fn is_prime(n: u64) -> bool {
if n < 2 { return false; }
(2..=(n as f64).sqrt() as u64).all(|d| n % d != 0)
}
fn main() {
let nums: Vec<u64> = (1..1_000_000).collect();
// Sequential
let primes_seq: Vec<&u64> = nums.iter().filter(|&&n| is_prime(n)).collect();
println!("sequential: {} primes", primes_seq.len());
// Parallel — only one method-name change
let primes_par: Vec<&u64> = nums.par_iter().filter(|&&n| is_prime(n)).collect();
println!("parallel: {} primes", primes_par.len());
// Parallel sum / fold
let total: u64 = (1u64..=1_000_000).into_par_iter().sum();
println!("Σ = {total}");
}
Create a free account and build your private vault. Share publicly whenever you want.