#高阶 #特质 #映射 #初始化 #数组

nightly no-std higher_order_functions

实现高阶函数的一组小特质集合

4 个版本

0.2.0 2022 年 6 月 27 日
0.1.2 2021 年 4 月 4 日
0.1.1 2020 年 9 月 8 日
0.1.0 2020 年 9 月 2 日

#1549Rust 模式


2 crates 中使用

MIT 许可证

16KB
174

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

要使用此库,请在 Cargo.toml 中将其添加为依赖项

[dependencies]
higher_order_functions = "^0.2.0"

无运行时依赖