Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

matheus-git/flat_rbtree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

59 Commits

Repository files navigation

flat_rbtree

rust

A fast, index-based Red-Black Tree with no heap allocations — ideal for systems where performance and memory layout matter.

See Documentation

Features

  • Flat storage: all nodes are stored in a array, avoiding pointer indirection.
  • No allocations per node: avoids Box, Rc, or Arc.
  • No-std: works in embedded or bare-metal environments without relying on the Rust standard library..
  • Preallocated with MaybeUninit: memory for all nodes is allocated upfront, minimizing runtime overhead and ensuring safe initialization.
  • Fixed capacity: tree size is bounded at compile-time, making resource usage predictable.
  • expanded feature (optional): enables tracking of subtree sizes for each node, allowing support for rank, select, and range_count queries.

Simple usage

use flat_rbtree::RedBlackTree;
let mut tree = RedBlackTree::<i32, &str, 10>::new();
tree.insert(10, "A");
tree.insert(20, "B");
tree.insert(5, "C");
tree.update(10, "Updated A");
if let Some(value) = tree.search(&10) {
 println!("Key 10 has value: {}", value);
}
for (key, value) in tree.iter() {
 println!("Key: {}, Value: {}", key, value);
}
tree.remove(20);
if !tree.contains_key(&20) {
 println!("Key 20 successfully removed");
}

Benchmark: flat_rbtree vs rbtree (10,000 operations)

Operation flat_rbtree rbtree
Insert 1.14 ms 1.34 ms
Remove 2.12 ns 0.35 ns
Search 655 μs 514 μs

Benchmark: flat_rbtree vs BTreeMap (10,000 operations)

Operation flat_rbtree BTreeMap
Insert 1.14 ms 0.89 ms
Remove 2.12 ns 18,90 ns
Search 702 μs 524 μs

📝 License

This project is open-source under the MIT License.

About

A flat, index-based Red-Black Tree with no heap allocations. Ideal memory-constrained environments.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /