Porting Go's [`go-immutable-radix`](https://github.com/hashicorp/go-immutable-radix) to Rust. Provides the `iradix` package that implements an immutable [radix tree](http://en.wikipedia.org/wiki/Radix_tree).
[
][Github-url]
[
][CI-url]
[
][codecov-url]
[
][doc-url]
[
][crates-url]
[
][crates-url]
English | [简体中文][zh-cn-url]
## Introduction
The package only provides a single `Tree` implementation, optimized for sparse nodes.
As a radix tree, it provides the following:
- `O(k)` operations. In many cases, this can be faster than a hash table since
the hash function is an `O(k)` operation, and hash tables have very poor cache locality.
- Minimum / Maximum value lookups
- Ordered iteration
A tree supports using a transaction to batch multiple updates (insert, delete)
in a more efficient manner than performing each operation one at a time.
## Installation
```toml
[dependencies]
iradix = "0.1"
```
#### License
`iradix` is under the terms of the Mozilla Public License (Version 2.0).
See [LICENSE](LICENSE) for details.
Copyright (c) 2023 Al Liu.
Copyright (c) 2015 HashiCorp, Inc.
[Github-url]: https://github.com/al8n/iradix/
[CI-url]: https://github.com/al8n/iradix/actions/workflows/ci.yml
[doc-url]: https://docs.rs/iradix
[crates-url]: https://crates.io/crates/iradix
[codecov-url]: https://app.codecov.io/gh/al8n/iradix/
[zh-cn-url]: https://github.com/al8n/iradix/tree/main/README-zh_CN.md