#css-selectors #memoization #reselect

no-std memselect

兼容no-std的备忘选择器

2个版本

使用旧Rust 2015

0.1.1 2018年6月16日
0.1.0 2018年6月16日

缓存分类中排名268

MIT许可证

15KB
337

memselect

Travis

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的启发。

无运行时依赖