Crates.io | higher_order_functions |
lib.rs | higher_order_functions |
version | 0.2.0 |
source | src |
created_at | 2020-09-02 23:25:50.247102 |
updated_at | 2022-06-27 14:01:19.176287 |
description | A small collection of traits for implementing higher order functions |
homepage | https://github.com/LukeMiles49/higher-order-functions-rs |
repository | https://github.com/LukeMiles49/higher-order-functions-rs |
max_upload_size | |
id | 284061 |
size | 23,967 |
A small collection of traits for implementing higher order functions.
use higher_order_functions::Init;
struct House { number: usize }
// [T; N]: Init<T, usize>
let road = <[House; 3]>::init(|i| House { number: i + 1 });
assert_eq!(road[0].number, 1);
assert_eq!(road[1].number, 2);
assert_eq!(road[2].number, 3);
use higher_order_functions::Map;
let arr = [1, 4, 6, -3, 6].map(|x| x * 2);
assert_eq!(arr, [2, 8, 12, -6, 12]);
use higher_order_functions::Map;
let arr = [1, 4, 6, -3, 6].map(f64::from);
assert_eq!(arr, [1.0, 4.0, 6.0, -3.0, 6.0]);
use higher_order_functions::Zip;
let a = [1, 2, 3];
let b = ["a", "b", "c"];
let arr = a.zip_with(b, |ax, bx| (ax, bx));
assert_eq!(arr, [(1, "a"), (2, "b"), (3, "c")]);
use higher_order_functions::Zip;
let a = [1, 2, 3];
let b = [4, 5, 6];
let arr = a.zip_with(b, |ax, bx| ax * bx);
assert_eq!(arr, [4, 10, 18]);
use higher_order_functions::Section;
let a: [u32; 8] = [1, 2, 3, 4, 5, 6, 7, 8];
let arr: [u32; 4] = a.section(3); // Extracts 4 elements starting at a[3]
assert_eq!(arr, [4, 5, 6, 7]);
To use this, add it as a dependency to your Cargo.toml:
[dependencies]
higher_order_functions = "^0.2.0"