$devvkit learn --librarie rayon-guide
Rayon Guide
[rust][parallel][concurrency]
Rust
Install
cargo add rayon
Rayon converts sequential iterators to parallel with a single method call: par_iter().
Work-stealing scheduler dynamically balances work across threads without global locking.
Rayon guarantees thread-safety: the compiler ensures your closure is Send + Sync.
Setup
Add dependency· Cargo.toml.
cargo add rayon
Parallel Iterators
Basic par_iter· Parallel map.
use rayon::prelude::*; let numbers: Vec<i32> = (0..100_000).collect(); let doubled: Vec<i32> = numbers.par_iter().map(|n| n * 2).collect();
Parallel filter/map· Chain parallel ops.
let evens: Vec<_> = (0..1000).into_par_iter()
.filter(|n| n % 2 == 0)
.map(|n| n * n)
.collect();Parallel sum· Reduce in parallel.
let sum: i32 = (0..1_000_000).into_par_iter().sum(); let max = (0..1_000_000).into_par_iter().max();
Parallel sort· Multi-threaded sort.
let mut vec: Vec<i32> = /* ... */; vec.par_sort(); // parallel quicksort
Find any· Short-circuit search.
let found = data.par_iter().find_any(|&&x| x == 42);
Custom Operations
Fork-join· Manual parallelism.
use rayon::join;
let (left, right) = join(
|| process_half(&data[..mid]),
|| process_half(&data[mid..]),
);Performance
Custom thread pool· Control parallelism.
use rayon::ThreadPoolBuilder;
let pool = ThreadPoolBuilder::new()
.num_threads(4)
.build()
.unwrap();
pool.install(|| {
data.par_iter().for_each(|item| process(item));
});