22个版本 (11个重大更改)

0.12.0 2024年1月28日
0.11.0 2023年5月31日
0.10.0 2023年1月31日
0.9.3 2022年4月6日
0.1.0 2018年11月22日

#16 in 算法

Download history 45942/week @ 2024-04-08 45710/week @ 2024-04-15 44410/week @ 2024-04-22 48515/week @ 2024-04-29 53059/week @ 2024-05-06 53952/week @ 2024-05-13 73478/week @ 2024-05-20 62383/week @ 2024-05-27 69174/week @ 2024-06-03 71906/week @ 2024-06-10 68525/week @ 2024-06-17 71991/week @ 2024-06-24 54402/week @ 2024-07-01 48664/week @ 2024-07-08 44465/week @ 2024-07-15 45871/week @ 2024-07-22

196,366 每月下载量
用于 279 个crate(48 个直接使用)

MIT/Apache

180KB
3.5K SLoC

rstar

rstar 是 Rust 生态系统中的一个灵活的 n 维 r*-tree 实现,适用于用作空间索引。

特性

  • 使用安全的 Rust 编写的灵活 r*-tree
  • 支持自定义点类型
  • 支持插入用户定义的类型
  • 支持的操作
    • 插入
    • 矩形查询
    • 最近邻
    • 最近邻迭代
    • 定位在点上
    • 元素删除
    • 高效的批量加载
  • 提供几何原语,可以轻松插入到 r-tree 中
    • 点(具有固定大小的数组)
    • 线
    • 矩形
  • 依赖项少
  • 使用 serde 功能支持 Serde
  • no_std 兼容(但需要 alloc

几何形状

提供了点、线和矩形几何形状的原语。 geo crate 使用 rstar 作为高效的空间索引,并提供了存储复杂数据,如线串和多边形的 RTreeObject 实现。

基准测试

所有基准测试均在 i7-8550U CPU @ 1.80GHz 上进行,并使用均匀分布的点。底层的点类型是 [f64; 2]

基准测试 树大小 时间
批量加载 2000 229.82 us
顺序加载 2000 1.4477 ms
最近邻(批量加载的树) 100k 1.32微秒
最近邻(顺序树) 100k 1.56微秒
成功查找点 100k 177.32纳秒
未成功查找点 100k 273.51纳秒

项目状态

该项目正在积极开发中,欢迎提出功能需求和PR。

文档

文档托管在docs.rs

发布清单

该crate可以通过georust的rstar-publishers团队发布。发布新版本时,请遵循以下步骤。

  1. 从master创建分支,例如release/<version>
  2. 确保rstar/CHANGELOG.md描述了自上次发布以来的所有更改(尤其是破坏性更改)。
  3. 确保在Cargo.toml中的rstar中设置version元数据为新版本。
  4. 向master创建PR,获得批准并合并。
  5. 检出更新的master,进入rstar目录并运行cargo publish
  6. 创建标签<version>并将其推送到georust/rstar

许可证

根据您的要求,许可为以下之一

由您选择。

贡献

除非您明确声明,否则任何旨在包含在您的工作中的贡献(根据Apache-2.0许可定义),都将按照上述方式双重许可,而不附加任何额外的条款或条件。

依赖项

约1.5MB
约27K SLoC