BacktraceExt

Trait BacktraceExt 

Source
pub trait BacktraceExt: Sized {
    // Required method
    fn attach_backtrace_with_filter(self, filter: &BacktraceFilter) -> Self;

    // Provided method
    fn attach_backtrace(self) -> Self { ... }
}
Expand description

Extension trait for attaching backtraces to reports.

This trait provides methods to easily attach a captured backtrace to a report or to the error contained within a Result.

§Examples

Attach backtrace to a report:

use std::io;

use rootcause::report;
use rootcause_backtrace::BacktraceExt;

let report = report!(io::Error::other("An error occurred")).attach_backtrace();

Attach backtrace to a Result:

use std::io;

use rootcause::{Report, report};
use rootcause_backtrace::BacktraceExt;

fn might_fail() -> Result<(), Report> {
    Err(report!(io::Error::other("operation failed")).into_dynamic())
}

let result = might_fail().attach_backtrace();

Use a custom filter:

use std::io;

use rootcause::report;
use rootcause_backtrace::{BacktraceExt, BacktraceFilter};

let filter = BacktraceFilter {
    skipped_initial_crates: &[],
    skipped_middle_crates: &[],
    skipped_final_crates: &[],
    max_entry_count: 50,
    show_full_path: true,
};

let report = report!(io::Error::other("detailed error")).attach_backtrace_with_filter(&filter);

Required Methods§

Source

fn attach_backtrace_with_filter(self, filter: &BacktraceFilter) -> Self

Attaches a captured backtrace to the report using the specified filter.

§Examples
use std::io;

use rootcause::report;
use rootcause_backtrace::{BacktraceExt, BacktraceFilter};

let filter = BacktraceFilter {
    max_entry_count: 10,
    ..BacktraceFilter::DEFAULT
};

let report = report!(io::Error::other("error")).attach_backtrace_with_filter(&filter);

Provided Methods§

Source

fn attach_backtrace(self) -> Self

Attaches a captured backtrace to the report using the default filter.

§Examples
use std::io;

use rootcause::report;
use rootcause_backtrace::BacktraceExt;

let report = report!(io::Error::other("error")).attach_backtrace();

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<C: ?Sized, T> BacktraceExt for Report<C, Mutable, T>

Source§

impl<C: ?Sized, V, T> BacktraceExt for Result<V, Report<C, Mutable, T>>

Implementors§