2个版本
使用旧的Rust 2015
0.2.1 | 2017年6月22日 |
---|---|
0.2.0 | 2017年5月2日 |
#1431 in 数据结构
36 每月下载量
120KB
2.5K SLoC
IODyn: 动态输入和输出的集合
IODyn 是一个针对使用 Adapton 的程序的集合库,Adapton 是一个通用的增量计算框架。
IODyn 包含了序列、有限映射、集合和图的集合。
序列
- 随机访问卷尺 (RAZ):作为卷尺的序列,具有用于局部编辑、局部导航和全局导航(通过相关的 级别树 表示)的光标
- 级别树:作为平衡树的序列;高效的全球导航,例如,到偏移量,到两端(第一个或最后一个),或根据用户定义的导航数据。
- 堆栈(后进先出):压入,弹出
有限映射和集合
- 跳表:放入,获取,删除
进行中
- 队列(先进先出):压入,弹出
- 字典树(持久集合):放入,获取,删除,并集,交集
- 有向图:XXX
- 无向图:XXX
lib.rs
:
一组具有动态输入和输出的增量数据结构。
许多结构都有可暴露的可变头,用于快速更新,并且有一个 archive
函数来将当前头移动到指针之后,定义子序列。这个指针是可变的,因此更改可以传播到后续的计算。
对级别树或 raz 树上的折叠和 Map 类型计算将进行记忆化,这样在更改后重新运行计算将比从头开始运行快得多。
这些集合部分可变且部分持久(共享数据)。然而,作者们专注于增量功能,因此部分共享并未得到很好的实现。未命名归档的数据将完全持久,以确保克隆数据的更改不会影响原始数据。带有名称的归档数据应被视为可变结构,克隆数据的更改将影响原始数据。这些影响可能不会一致。在命名空间(adapton::engine::ns
)内编辑可变结构应产生一个版本,其编辑不会影响原始数据,但这尚未经过彻底测试。
依赖项
~0.6–0.9MB
~12K SLoC