// Created on savesnippets.com · https://savesnippets.com/Y9kpmvhmbl8eUu // 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 = (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}"); }