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
更改
- 使用
fnv
crate 对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]
已移动到illicit
crate。- 已删除
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