Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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]);
}

See Also