use color_eyre::eyre::Report; use tracing::instrument; #[instrument] fn main() -> Result<(), Report> { #[cfg(feature = "capture-spantrace")] install_tracing(); color_eyre::config::HookBuilder::default() .panic_section("consider reporting the bug on github") .install()?; read_config(); Ok(()) } #[cfg(feature = "capture-spantrace")] fn install_tracing() { use tracing_error::ErrorLayer; use tracing_subscriber::prelude::*; use tracing_subscriber::{fmt, EnvFilter}; let fmt_layer = fmt::layer().with_target(false); let filter_layer = EnvFilter::try_from_default_env() .or_else(|_| EnvFilter::try_new("info")) .unwrap(); tracing_subscriber::registry() .with(filter_layer) .with(fmt_layer) .with(ErrorLayer::default()) .init(); } #[instrument] fn read_file(path: &str) { if let Err(e) = std::fs::read_to_string(path) { panic!("{}", e); } } #[instrument] fn read_config() { read_file("fake_file") }