#call-stack #graph #visualize #lazy-evaluation #produces #spanner #once-cell

spannify

A crate that produces nice-looking graphs to visualize your callstack

7 releases

0.1.5 Aug 2, 2024
0.1.4 Aug 2, 2024
0.1.2 Jul 31, 2024
0.0.2 Jul 29, 2024

#230 in Science

Download history 555/week @ 2024-07-28 31/week @ 2024-08-04 6/week @ 2024-09-15 123/week @ 2024-09-29

129 downloads per month

MIT license

27KB
462 lines

Spannify

Build status Crates.io License

A tiny rust crate that produces nice-looking graphs for you to visualize your callstack

Example

use once_cell::sync::Lazy;
use spannify::{config::Config, core::StdoutSpanner, spf};

static SPANNER: Lazy<StdoutSpanner> =
    Lazy::new(|| StdoutSpanner::new().with_config(Config::new().with_skip(1)));

fn fib(n: usize) -> usize {
    let _span = spf!(SPANNER, "fib({n})");
    match n {
        0 => 0,
        1 | 2 => 1,
        _ => fib(n - 1) + fib(n - 2),
    }
}

fn main() {
    fib(5);
}

Output

┌fib(5)
| ┌fib(4)
| ¦ ┌fib(3)
| ¦ ┆ ┌fib(2)
| ¦ ┆ └fib(2)
| ¦ ┆ ┌fib(1)
| ¦ ┆ └fib(1)
| ¦ └fib(3)
| ¦ ┌fib(2)
| ¦ └fib(2)
| └fib(4)
| ┌fib(3)
| ¦ ┌fib(2)
| ¦ └fib(2)
| ¦ ┌fib(1)
| ¦ └fib(1)
| └fib(3)
└fib(5)

Documentation

Check out the full documentation at docs.rs Or take a look at the examples in examples

No runtime deps