snippetrustModeratepending
Rust iterator chains — idiomatic data transformation
Viewed 0 times
iteratormapfiltercollectflat_mapfoldzero-cost
rust
Problem
Processing collections in Rust with manual loops is verbose and error-prone. Need idiomatic patterns for filtering, mapping, and collecting data.
Solution
Rust iterators are zero-cost abstractions. Chain methods like filter, map, flat_map, and collect for expressive, performant data pipelines.
Code Snippets
Iterator chains for data processing
// Filter, transform, collect
let active_emails: Vec<String> = users
.iter()
.filter(|u| u.is_active)
.map(|u| u.email.to_lowercase())
.collect();
// flat_map to flatten nested structures
let all_tags: Vec<&str> = posts
.iter()
.flat_map(|post| post.tags.iter().map(String::as_str))
.collect();
// fold for aggregation
let total: f64 = items
.iter()
.filter(|i| i.category == Category::Food)
.fold(0.0, |sum, item| sum + item.price);
// Partition into two collections
let (passed, failed): (Vec<_>, Vec<_>) = results
.into_iter()
.partition(|r| r.score >= 70);
// windows for sliding window
let increases = prices
.windows(2)
.filter(|w| w[1] > w[0])
.count();Revisions (0)
No revisions yet.