quercus 0.1.1

Easy to use CLI tree for your branchy info.
Documentation
  • Coverage
  • 0%
    0 out of 20 items documented0 out of 15 items with examples
  • Size
  • Source code size: 29.78 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.68 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 13s Average build duration of successful builds.
  • all releases: 13s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • jevgarrido/quercus
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jevgarrido

quercus

quercus is the scientific genus name for oak trees.

This crate was inspired by ptree.

Main features

This crate allows you to create trees with many roots.


This crate does not have a syntax distinction for the first node/branch of a given root.

The crate also does not have a syntax distinction for nodes that do not have branches (leaves) or nodes that do.

This makes it easy to create a tree recursively, as the information is not needed when adding a new node.


This crate also provides a (small) variety of branch styles and a versatile indentation option that may be invoked spontaneously during the construction of the tree.

Usage

The following code

let mut tree = Tree::new();

tree.node("Root");

tree.begin_branches();
    tree.node("Branch 1");
    tree.node("Branch 2");
tree.end_branches();

tree.prune();

println!("{tree}");

results in:

Root
├── Branch 1
└── Branch 2

For a node with many lines use the node_many_lines() command. For example, the code

    let mut tree = Tree::new().style(PipeStyle::Double).indent(5);

    tree.node("Root");
    tree.begin_branches();
        tree.node_many_lines(&["Branch 1", "Some", "more", "information"]);
        tree.begin_branches();
            tree.node("Autumn leaf");
            tree.node("Spring leaf");
        tree.end_branches();

        tree.indent(0); // Change indentation

        tree.node("Branch 2");
        tree.begin_branches();
            tree.node("Summer leaf");
            tree.node("Winter (no leaf) :(");
        tree.end_branches();
    tree.end_branches();

    tree.prune_and_print();

results in:

Root
╠═════ Branch 1
      Some
      more
      information
      ╠═════ Autumn leaf
      ╚═════ Spring leaf
 Branch 2
   Summer leaf
   Winter (no leaf) :(

Appearance Options

Indentation

The indentation of the branches can be set through the indent() command, which expects a usize integer.

This command can be invoked anywhere during the construction of the tree.

Branch Style

The style of the branches can be set through the style() command, which expects a PipeStyle enum variant.

Currently, the following variants are available:

  • PipeStyle::Simple :
  • PipeStyle::Curvy :
  • PipeStyle::Double :
  • PipeStyle::Thick :

This command, however, may only be invoked at the root level of the tree.

Crate Examples

For an example that builds a tree recursively, run

$ cargo run --release --example fibonacci

This should yield the following output:

5
├─ 3
  ├─ 2
  │  ├─ 1
  │  │  ├─ 1
  │  │  ╰─ 0
  │  ╰─ 1
  ╰─ 1
     ├─ 1
     ╰─ 0
╰─ 2
   ├─ 1
     ├─ 1
     ╰─ 0
   ╰─ 1

For an example that uses the colored crate as well as the node_many_lines() command, run

$ cargo run --release --example hierarchy

License

This project is licensed under either