A flexible, n-dimensional r*-tree implementation for the rust ecosystem.
- A flexible r*-tree written in safe rust
- Supports custom point types
- Supports the insertion of user defined types
- Supported operations:
- Rectangle queries
- Nearest neighbor
- Nearest neighbor iteration
- Locate at point
- Element removal
- efficient bulk loading
- Features geometric primitives that can readily be inserted into an r-tree:
- Points (arrays with a constant size)
- Small number of dependencies
- Serde support with the
All benchmarks are performed on a i7-8550U CPU @ 1.80Ghz and with uniformly distributed points. The underlying point type is
|bulk loading||2000||229.82 us|
|sequentially loading||2000||1.4477 ms|
|nearest neighbor (bulk loaded tree)||100k||1.32 us|
|nearest neighbor (sequential tree)||100k||1.56 us|
|successful point lookup||100k||177.32 ns|
|unsuccessful point lookup||100k||273.51 ns|
The project is being actively developed, feature requests and PRs are welcome!
The documentation is hosted on docs.rs.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.