Array Utilities
Pure functional helpers for working with slices and vectors.
Transformation
map
#![allow(unused)]
fn main() {
use rok_utils::arr::map;
let numbers = [1, 2, 3, 4, 5];
let doubled = map(&numbers, |x| x * 2);
assert_eq!(doubled, vec![2, 4, 6, 8, 10]);
}
filter
#![allow(unused)]
fn main() {
use rok_utils::arr::filter;
let numbers = [1, 2, 3, 4, 5];
let evens = filter(&numbers, |x| x % 2 == 0);
assert_eq!(evens, vec![2, 4]);
}
reduce
#![allow(unused)]
fn main() {
use rok_utils::arr::reduce;
let numbers = [1, 2, 3, 4];
let sum = reduce(&numbers, 0, |acc, x| acc + x);
assert_eq!(sum, 10);
}
Chunking and Flipping
chunk
#![allow(unused)]
fn main() {
use rok_utils::arr::chunk;
let numbers = [1, 2, 3, 4, 5, 6];
let chunks = chunk(&numbers, 2);
assert_eq!(chunks, vec![vec![1, 2], vec![3, 4], vec![5, 6]]);
}
reverse
#![allow(unused)]
fn main() {
use rok_utils::arr::reverse;
let numbers = [1, 2, 3];
let reversed = reverse(&numbers);
assert_eq!(reversed, vec![3, 2, 1]);
}
Query
first / last
#![allow(unused)]
fn main() {
use rok_utils::arr::{first, last};
let items = ["a", "b", "c"];
assert_eq!(first(&items), Some(&"a"));
assert_eq!(last(&items), Some(&"c"));
}
find
#![allow(unused)]
fn main() {
use rok_utils::arr::find;
let numbers = [1, 2, 3, 4, 5];
let found = find(&numbers, |x| *x == 3);
assert_eq!(found, Some(&3));
}
contains
#![allow(unused)]
fn main() {
use rok_utils::arr::contains;
let items = ["a", "b", "c"];
assert!(contains(&items, &"b"));
assert!(!contains(&items, &"d"));
}
Set Operations
unique
#![allow(unused)]
fn main() {
use rok_utils::arr::unique;
let a = [1, 2, 3, 2, 1];
let uniq = unique(&a);
assert_eq!(uniq, vec![1, 2, 3]);
}
diff
#![allow(unused)]
fn main() {
use rok_utils::arr::diff;
let a = [1, 2, 3, 4];
let b = [2, 4];
let difference = diff(&a, &b);
assert_eq!(difference, vec![1, 3]);
}
intersect
#![allow(unused)]
fn main() {
use rok_utils::arr::intersect;
let a = [1, 2, 3];
let b = [2, 3, 4];
let intersection = intersect(&a, &b);
assert_eq!(intersection, vec![2, 3]);
}
without
#![allow(unused)]
fn main() {
use rok_utils::arr::without;
let numbers = [1, 2, 3, 4, 5];
let filtered = without(&numbers, &[2, 4]);
assert_eq!(filtered, vec![1, 3, 5]);
}