https://github.com/saschagrunert/indextree
Arena based tree 🌲 structure by using indices instead of reference counted pointers
https://github.com/saschagrunert/indextree
arena data-structrues rust tree-structure
Last synced: 3 months ago
JSON representation
Arena based tree 🌲 structure by using indices instead of reference counted pointers
- Host: GitHub
- URL: https://github.com/saschagrunert/indextree
- Owner: saschagrunert
- License: mit
- Created: 2016-12-20T13:57:28.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-02-10T11:38:00.000Z (5 months ago)
- Last Synced: 2025-04-03T11:40:30.648Z (3 months ago)
- Topics: arena, data-structrues, rust, tree-structure
- Language: Rust
- Homepage:
- Size: 5.15 MB
- Stars: 737
- Watchers: 8
- Forks: 57
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# indextree
[](https://github.com/saschagrunert/indextree/actions/workflows/test.yml)
[](https://codecov.io/gh/saschagrunert/indextree)
[](https://deps.rs/repo/github/saschagrunert/indextree)
[](https://saschagrunert.github.io/indextree/doc/indextree)
[](https://github.com/saschagrunert/indextree/blob/main/LICENSE)
[](https://crates.io/crates/indextree)
[](https://docs.rs/indextree)## Arena based tree structure with multithreading support
This arena tree structure is using just a single `Vec` and numerical identifiers
(indices in the vector) instead of reference counted pointers. This means there
is no `RefCell` and mutability is handled in a way much more idiomatic to Rust
through unique (&mut) access to the arena. The tree can be sent or shared across
threads like a `Vec`. This enables general multiprocessing support like
parallel tree traversals.### Example usage
```rust
use indextree::Arena;// Create a new arena
let arena = &mut Arena::new();// Add some new nodes to the arena
let a = arena.new_node(1);
let b = arena.new_node(2);// Append a to b
assert!(a.append(b, arena).is_ok());
assert_eq!(b.ancestors(arena).into_iter().count(), 2);
```### Benchmarks
https://github.com/mooman219/generational_arena_bench