ebacktrace 0.2.0

A simple error wrapper which captures a backtrace and can carry an optional textual description
Documentation

License BSD-2-Clause License MIT Travis CI AppVeyor CI docs.rs crates.io Download numbers dependency status

ebacktrace

Welcome to ebacktrace 🎉

This crate implements a simple error wrapper which captures a backtrace upon creation and can carry an optional textual description of the error.

Example

#![feature(backtrace)]
#[macro_use] extern crate ebacktrace;

/// The error kind
#[derive(Debug, Copy, Clone)]
enum ErrorKind {
    MyErrorA,
    Testolope
}

// Define our custom error type
define_error!(Error);

/// A function that will always fail
fn will_fail() -> Result<(), Error<ErrorKind>> {
    Err(ErrorKind::Testolope)?
}

// Will panic with a nice fully-backtraced error
will_fail().unwrap();

Features

This crate currently has two feature gates:

  • force_backtrace (enabled by default): Use Backtrace::force_capture (instead of Backtrace::capture) to always capture a backtrace regardless whether RUST_BACKTRACE is set or not.
  • derive_display (enabled by default): Use the Display-trait for Etrace<MyType> using the Debug representation of MyType (instead of the Display representation). This way you can pretty-print the underlying error types without the necessity to manually implement the Display-trait for them.