arbutus

Crates.ioarbutus
lib.rsarbutus
version0.1.5
sourcesrc
created_at2024-10-12 08:28:31.675993
updated_at2024-11-03 07:54:41.238575
descriptionArbutus Trees
homepagehttps://github.com/boondocklabs/arbutus
repositoryhttps://github.com/boondocklabs/arbutus
max_upload_size
id1406323
size112,535
Matt Thompson (boondocklabs)

documentation

README

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:

[dependencies]
arbutus = "0.1.0"

Example of building a tree

// 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::<TestData, MyError>::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 file for details.

Commit count: 33

cargo fmt