2个版本
使用旧Rust 2015
0.1.1 | 2018年6月16日 |
---|---|
0.1.0 | 2018年6月16日 |
在缓存分类中排名268
15KB
337 行
memselect
Rust的兼容no-std的备忘选择器。
Memselect允许您创建用于备忘昂贵计算的效率选择器。这些选择器可以组合成更高级的选择器,从而受益于备忘。单态化确保高效的运行时行为。
示例
use memselect::{new1, new2, Selector2};
let mut computations = 0;
{
let base = new1(|num: u32| num, |num| num * 2);
let mut selector = new2(
base, // You can nest selectors
|num: u32| num * 3,
|num1, num2| { // This function gets the output of `base` and the fn above
computations += 1;
(*num1, *num2)
},
);
assert_eq!(selector.select(2, 3), (4, 9));
assert_eq!(selector.select(2, 3), (4, 9));
}
// Value was computed only once
assert_eq!(computations, 1);
lib.rs
:
兼容no-std的备忘选择器组合库。
Memselect允许您创建用于备忘昂贵计算的效率选择器。这些选择器可以组合成更高级的选择器,从而受益于备忘。单态化确保高效的运行时行为。
示例
use memselect::{new1, new2, Selector2};
let mut computations = 0;
{
let base = new1(|num: u32| num, |num| num * 2);
let mut selector = new2(
base, // You can nest selectors
|num: u32| num * 3,
|num1, num2| { // This function gets the output of `base` and the fn above
computations += 1;
(*num1, *num2)
},
);
assert_eq!(selector.select(2, 3), (4, 9));
assert_eq!(selector.select(2, 3), (4, 9));
}
// Value was computed only once
assert_eq!(computations, 1);
这个库在很大程度上受到了为redux创建的reselect
的启发。