# error_hook This library supplements errors on a per-function basis and executes hooks. ## Example ```rust use error_hook::{self, hook}; #[hook(e => tracing::error!("{e}"))] #[tracing::instrument] async fn test(a: i32, b: i32) -> error_hook::Result { a.checked_mul(b).ok_or(anyhow::anyhow!("overflow")) } #[tokio::main] async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO) .init(); let ans = test(888888888, 888888888).await?; println!("{ans}"); Ok(()) } ``` output ```shell 2023-03-04T06:23:33.048087Z ERROR test{a=888888888 b=888888888}: example: overflow ```