snippetrustTippending
Rust itertools for advanced iterator operations
Viewed 0 times
itertoolschunkuniquecartesianjoinsorted
Problem
Standard library iterators lack some common operations like chunking, deduplication, or Cartesian products.
Solution
Use the itertools crate for advanced iterator combinators:
use itertools::Itertools;
// Chunk iterator
for chunk in &(0..10).chunks(3) {
let v: Vec<_> = chunk.collect();
println!("{:?}", v);
}
// Unique elements
let unique: Vec<_> = vec![1, 2, 1, 3, 2].into_iter().unique().collect();
// Cartesian product
let pairs: Vec<_> = (0..3).cartesian_product(0..3).collect();
// Join with separator
let s = vec!["a", "b", "c"].into_iter().join(", ");
// Sorted
let sorted: Vec<_> = vec![3, 1, 2].into_iter().sorted().collect();
use itertools::Itertools;
// Chunk iterator
for chunk in &(0..10).chunks(3) {
let v: Vec<_> = chunk.collect();
println!("{:?}", v);
}
// Unique elements
let unique: Vec<_> = vec![1, 2, 1, 3, 2].into_iter().unique().collect();
// Cartesian product
let pairs: Vec<_> = (0..3).cartesian_product(0..3).collect();
// Join with separator
let s = vec!["a", "b", "c"].into_iter().join(", ");
// Sorted
let sorted: Vec<_> = vec![3, 1, 2].into_iter().sorted().collect();
Why
itertools extends Rust's iterator trait with commonly needed operations without allocating intermediate collections.
Revisions (0)
No revisions yet.