2个版本

使用旧的Rust 2015

0.2.1 2017年6月22日
0.2.0 2017年5月2日

#1431 in 数据结构

36 每月下载量

MPL-2.0 许可证

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