use tracing::{debug, info, instrument}; use tracing_subscriber::{layer::SubscriberExt, registry::Registry}; use tracing_tree::HierarchicalLayer; #[instrument] fn nth_fibonacci(n: u64) -> u64 { if n == 0 || n == 1 { debug!("Base case"); 1 } else { debug!("Recursing"); nth_fibonacci(n - 1) + nth_fibonacci(n - 2) } } #[instrument] fn fibonacci_seq(to: u64) -> Vec { let mut sequence = vec![]; for n in 0..=to { debug!("Pushing {n} fibonacci", n = n); sequence.push(nth_fibonacci(n)); } sequence } fn main() { let layer = HierarchicalLayer::default() .with_indent_lines(true) .with_indent_amount(2) .with_bracketed_fields(true); let subscriber = Registry::default().with(layer); tracing::subscriber::set_global_default(subscriber).unwrap(); let n = 5; let sequence = fibonacci_seq(n); info!("The first {} fibonacci numbers are {:?}", n, sequence); }