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 算法
196,366 每月下载量
用于 279 个crate(48 个直接使用)
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
团队发布。发布新版本时,请遵循以下步骤。
- 从master创建分支,例如
release/<version>
。 - 确保
rstar/CHANGELOG.md
描述了自上次发布以来的所有更改(尤其是破坏性更改)。 - 确保在
Cargo.toml
中的rstar
中设置version
元数据为新版本。 - 向master创建PR,获得批准并合并。
- 检出更新的master,进入
rstar
目录并运行cargo publish
。 - 创建标签
<version>
并将其推送到georust/rstar
许可证
根据您的要求,许可为以下之一
- Apache License,版本2.0,(LICENSE-APACHE或http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则任何旨在包含在您的工作中的贡献(根据Apache-2.0许可定义),都将按照上述方式双重许可,而不附加任何额外的条款或条件。
依赖项
约1.5MB
约27K SLoC