6 releases (3 breaking)

0.4.0 Feb 4, 2025
0.3.0 Oct 27, 2021
0.2.0 Jun 24, 2021
0.1.2 Nov 3, 2020
0.1.1 Nov 22, 2019

#331 in Rust patterns

Download history 64/week @ 2024-10-22 31/week @ 2024-10-29 26/week @ 2024-11-05 21/week @ 2024-11-12 13/week @ 2024-11-19 48/week @ 2024-11-26 122/week @ 2024-12-03 132/week @ 2024-12-10 58/week @ 2024-12-17 60/week @ 2024-12-24 13/week @ 2024-12-31 116/week @ 2025-01-07 38/week @ 2025-01-14 67/week @ 2025-01-21 14/week @ 2025-01-28 218/week @ 2025-02-04

409 downloads per month
Used in medea-jason

BlueOak-1.0.0

23KB
473 lines

tracerr

crates.io Rust 1.75+ Unsafe Forbidden
CI Rust docs

API Docs | Changelog

Custom compile-time captured error tracing for Rust.

Usage

The common rule:

  • Use macro to capture trace frame in the invocation place.
use tracerr::Traced;

let err = tracerr::new!("my error"); // captures frame

let res: Result<(), _> = Err(err)
    .map_err(tracerr::wrap!()); // captures frame

let err: Traced<&'static str> = res.unwrap_err();
# #[cfg(not(target_os = "windows"))]
assert_eq!(
    format!("{}\n{}", err, err.trace()),
    r"my error
error trace:
rust_out
  at src/lib.rs:7
rust_out
  at src/lib.rs:10",
);

let (val, trace) = err.split();
# #[cfg(not(target_os = "windows"))]
assert_eq!(
    format!("{}\n{}", val, trace),
    r"my error
error trace:
rust_out
  at src/lib.rs:7
rust_out
  at src/lib.rs:10",
);

License

Copyright © 2019-2025 Instrumentisto Team, https://github.com/instrumentisto

This software is subject to the terms of the Blue Oak Model License 1.0.0. If a copy of the BlueOak-1.0.0 license was not distributed with this file, You can obtain one at https://blueoakcouncil.org/license/1.0.0.

Dependencies

~0.3–0.8MB
~19K SLoC