Rust

Rayon — Parallel Iterators

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`rayon` lets you parallelize CPU-bound iterator chains by changing `.iter()` to `.par_iter()`. Handles thread-pool, work-stealing, and synchronization for you.
Rust
Raw
// 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}");
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.