5 个不稳定版本
| 0.10.0 | 2020 年 7 月 6 日 |
|---|---|
| 0.9.0 | 2019 年 12 月 27 日 |
| 0.8.2 | 2019 年 11 月 20 日 |
| 0.8.1 | 2019 年 8 月 17 日 |
| 0.8.0 | 2019 年 6 月 23 日 |
#163 在 #identifier
每月 90 次下载
在 11 个 crate 中使用 (通过 topo)
3KB
topo
topo crate 提供增量缓存和标识符,用于重复函数调用。结合变更通知机制,它可以用来实现一种形式的 增量计算。
[0.10.0] - 2020-07-05
修复
Id生成不再容易受到哈希冲突的影响。
新增
- #[nested] 允许指定一个
slot。 cache::{Cache, GlobalCache}类型,用于存储内部化和记忆化的值。cache::{SharedCache, SharedGlobalCache}类型,用于实现安全的多个所有者对缓存的访问,通过谨慎的锁定实现cache_with,以允许未来的嵌套调用。root自由函数,允许重新设置调用拓扑的根(即如果在更广泛的调用中运行)。
移除
Callsite和Point已不再pub。#![feature(track_caller)]已不再需要,尽管直到 1.46 达到 beta/stable,nightly-2020-07-02 仍然适用。
更改
call_in_slot接受借用槽。Id重命名为CallId。illicit依赖更新到 1.0。impl Trait已从公共API中删除,这可能导致意外产生Send/!Send合同。
[0.9.4] - 2019-12-26
更改
- 已更新
illicit依赖到0.9.0。
[0.9.3] - 2019-12-25
更改
#[track_caller]用于生成Id,替代宏。目前需要使用夜间构建版。- 使用
DefaultHasher而不是FnvHasher。
新增
call和call_in_slot函数。
移除
call!和unstable_make_topo_macro!宏。
[0.9.2] - 2019-11-23
更改
- 使用
fnvcrate 对Id进行哈希。
[0.9.1] - 2019-11-21
移除
#![warn(intra_doc_resolution_failure)]由于 root_html_url 导致 docs.rs 问题。
[0.9.0] - 2019-11-19
新增
#![禁止(不安全代码)]call!除了接受调用位置被看到的次数之外,还可以接受 "slot"。调用位置计数仍然是默认值。- 当没有
Point已被进入时,现在将创建一个新的根,并在执行块之前进入它。
更改
- 将
#[bound]重命名为#[nested]。 - 将
current_callsite_count重命名为Callsite::current_count。
移除
env!、Env、#[from_env]已移动到illicitcrate。- 已删除
root!,因为每次在Point外调用call!时都会创建一个新的根。
[0.8.2] - 2019-08-20
修复
root!不会隐藏外部环境,从而不会被调用块隐藏。
[0.8.1] - 2019-08-17
更改
Id的Debug实现使用十六进制。
修复
- 不正确的行结束符。
[0.8.0] - 2019-06-23
新增
#[topo::bound]将一个函数附加到拓扑。root!和call!宏分别将任意块附加到新或当前拓扑,每个调用都会进入新的Point,每个调用都有一个(主要是)唯一的Id。env!宏允许声明类型索引的隐式变量,产生Env实例。
[0.1.0] - 2019-05-26
发布到crates.io以保留名称。
依赖关系
~1.5MB
~35K SLoC