## Arbutus Arbutus is a tree data structure library for Rust. ### Overview Arbutus provides a high-level API for constructing and manipulating trees, along with support for indexing and querying. The library focuses on simplicity, flexibility, and performance. ### Features * **Tree Construction**: Build trees using the `TreeBuilder` API, which provides a composable way to construct tree structures. * **Indexing**: Utilize B-Tree indices for efficient querying and retrieval of node data. * **Iterators**: Traverse trees using iterators ### Getting Started To get started with Arbutus, add the following dependency to your `Cargo.toml` file: ```toml [dependencies] arbutus = "0.1.0" ``` Example of building a tree ```rust // Custom errors can be propagated through the builder closures #[derive(Debug)] enum MyError { Fail(String), } #[derive(Debug)] enum TestData { Foo, Bar, String(String), Baz, } let tree = TreeBuilder::::new() .root(TestData::Foo, |foo| { debug!("Foo builder closure"); foo.child(TestData::Bar, |bar| { debug!("Bar builder closure"); bar.child(TestData::Baz, |_| Ok(())) })?; foo.child(TestData::String("Hello".into()), |_| Ok(()))?; Ok(()) }) .unwrap() .done(); info!("{tree:#?}"); ``` ### License Arbutus is released under the MIT license. See the [LICENSE](LICENSE.txt) file for details.