#数据结构 #无 std #生成性 #下界

无 std indexing

使用“生成性”实现安全的未检查索引;一种类型系统方法,用于信任索引、指针和范围在边界内

14 个版本

0.4.1 2019年9月11日
0.3.2 2018年1月17日
0.3.1 2017年11月19日
0.3.0 2016年12月22日
0.1.0 2016年2月16日

#1770 in Rust 模式

Download history 155/week @ 2024-03-15 142/week @ 2024-03-22 167/week @ 2024-03-29 195/week @ 2024-04-05 143/week @ 2024-04-12 149/week @ 2024-04-19 127/week @ 2024-04-26 129/week @ 2024-05-03 132/week @ 2024-05-10 126/week @ 2024-05-17 97/week @ 2024-05-24 120/week @ 2024-05-31 107/week @ 2024-06-07 91/week @ 2024-06-14 120/week @ 2024-06-21 40/week @ 2024-06-28

377 次每月下载
2 个包中使用 (通过 gll)

MIT/Apache 许可

120KB
3K SLoC

indexing

在 Rust 中使用“生成性”实现“安全的未检查索引”(通过独特的生命周期参数进行品牌化)。

非常实验性,但有些有希望和令人兴奋。

主要关注索引范围,而不仅仅是单个索引。

build_status

包功能

  • use_std默认启用,禁用以兼容no_std-。

参考文献

也描述在: 没有 Rust 就不能拼写出信任。第 6.3 在 Rust 上添加生成性 章。Gankro 的硕士学位论文。

最近更改

  • 0.4.1
    • 移除对非FixedLength容器的克隆能力,因为在容器中存在长度改变的 .push()/.insert() 方法时,允许克隆容器是错误的。
  • 0.4.0
    • 添加方法.make_twin()允许两个或多个容器使用相同的信任索引,如果它们大小相同
    • 添加新的标记特质FixedLength用于make_twin.
    • 移除带品牌的原始指针功能,因为它们需要修订(见 #11)
    • 修复.join_cover()
    • 中的签名错误ContiguousMut现在它正确使用&mut正确
    • 更新开发依赖项
    • 添加Ord, PartialOrd实现Range
    • 现在使用 Rust 2018,并要求 Rust 1.32 或更高版本。
  • 0.3.2
    • 修复关于指针转换的未来兼容性警告。
    • 添加Ord, Hash实现IndexHashforRange
  • 0.3.1
    • 修复测试中的错误
    • 添加 crates.io 类别
  • 0.3.0
    • 稍微调整实现特质,PointerRange, Provable, ContainerRef, 使它们在需要的地方不安全。
    • 添加Container::range_of
  • 0.2.0
    • 文档更好
    • 重构大多数包,为除切片外的其他后端做准备
    • 暴露PIndex, PRange, PSlice它们是安全信任索引和范围的基于指针的等效物。某些算法在使用原始指针表示时更好(例如:下界)。由于我们没有 HKT,因此将所有这些特质化并不愉快,并且尚未完成。
    • 新功能:可以将可信索引与 Vec 上的推送/插入相结合。
  • 0.1.2
    • 添加binary_search_bylower_bound算法。算法不再需要T: Debug了。
  • 0.1.1
    • 将文档指向 docs.rs
  • 0.1.0
    • 添加一些文档和测试
    • 修复 Range::join_cover_both 以使用 ProofAdd
  • 0.1.0-alpha3
    • 添加 IndexingError 并将其用于所有 Results。
  • 0.1.0-alpha2
    • 添加 ProofAdd 并在 Range::join, Range::join_cover 中使用它
    • 使 Index<'id>, Range<'id> 具有发送 + 同步特性
  • 0.1.0-alpha1
    • 第一个版本

许可证

双许可,以与 Rust 项目兼容。

根据您的选择,许可协议为 Apache License,版本 2.0 https://apache.ac.cn/licenses/LICENSE-2.0 或 MIT 许可证 http://opensource.org/licenses/MIT。此文件不得复制、修改或分发,除非根据这些条款。

依赖项

~0–9MB
~62K SLoC