#closures #hash-map #cache #recursion #versatile #argument #effectless

memorize

支持递归算法的灵活且快速的闭包缓存器

2个稳定版本

2.0.0 2023年11月7日
1.0.0 2023年10月30日

#209 in 缓存

MIT 许可证

6KB
96

在hashmap中缓存无副作用的闭包的返回值。受 closure_cacher crate 启发,但试图提供更灵活的实现。

use memorize::{cached, Cache};

let demo = cached(|arg, _| arg * 2);
assert_eq!(demo.find(&7), 14);

第二个参数是回调,它可以用于递归。

use memorize::{cached, Cache};

let demo = cached(|arg, r| match arg {
  1 | 2 => 1,
  n => r(&(n - 1)) + r(&(n - 2)),
});
assert_eq!(demo.find(&15), 610)

lib.rs:

在hashmap中缓存无副作用的闭包的返回值 受 closure_cacher crate 启发,但试图提供更灵活的实现。

use memorize::{cached, Cache};

let demo = cached(|arg, _| arg * 2);
assert_eq!(demo.find(&7), 14);

第二个参数是回调,它可以用于递归。

use memorize::{cached, Cache};

let demo = cached(|arg, r| match arg {
  1 | 2 => 1,
  n => r.r(&(n - 1)) + r.r(&(n - 2)),
});
assert_eq!(demo.find(&15), 610)

依赖关系

~2MB
~26K SLoC