scoped-trace 0.1.0

Collect scoped backtraces.
Documentation
use scoped_trace::Trace;

fn foo() {
    bar();
    baz();
}

#[inline(always)]
fn bar() {
    Trace::leaf();
}

#[inline(always)]
fn baz() {
    Trace::leaf();
}

#[allow(clippy::redundant_closure)]
#[test]
fn inlining() {
    let (_, trace) = Trace::root(|| foo());
    assert_eq!(
        format!("{trace}"),
        format!(
            "\
╼ inlining::inlining::{{{{closure}}}} at {file}:21:37
  ├╼ inlining::foo at {file}:4:5
  │  └╼ inlining::bar at {file}:10:5
  └╼ inlining::foo at {file}:5:5
     └╼ inlining::baz at {file}:15:5",
            file = format!(
                concat!(env!("CARGO_MANIFEST_DIR"), "{}", file!()),
                std::path::MAIN_SEPARATOR
            )
        )
    );
}