Skip to main content

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".

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§