Struct backtrace::print::BacktraceFmt
source · pub struct BacktraceFmt<'a, 'b> {
fmt: &'a mut Formatter<'b>,
frame_index: usize,
format: PrintFmt,
print_path: &'a mut (dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b),
}
Expand description
A formatter for backtraces.
This type can be used to print a backtrace regardless of where the backtrace
itself comes from. If you have a Backtrace
type then its Debug
implementation already uses this printing format.
Fields§
§fmt: &'a mut Formatter<'b>
§frame_index: usize
§format: PrintFmt
§print_path: &'a mut (dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b)
Implementations§
source§impl<'a, 'b> BacktraceFmt<'a, 'b>
impl<'a, 'b> BacktraceFmt<'a, 'b>
sourcepub fn new(
fmt: &'a mut Formatter<'b>,
format: PrintFmt,
print_path: &'a mut (dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b),
) -> Self
pub fn new( fmt: &'a mut Formatter<'b>, format: PrintFmt, print_path: &'a mut (dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b), ) -> Self
Create a new BacktraceFmt
which will write output to the provided
fmt
.
The format
argument will control the style in which the backtrace is
printed, and the print_path
argument will be used to print the
BytesOrWideString
instances of filenames. This type itself doesn’t do
any printing of filenames, but this callback is required to do so.
sourcepub fn add_context(&mut self) -> Result
pub fn add_context(&mut self) -> Result
Prints a preamble for the backtrace about to be printed.
This is required on some platforms for backtraces to be fully
symbolicated later, and otherwise this should just be the first method
you call after creating a BacktraceFmt
.
sourcepub fn frame(&mut self) -> BacktraceFrameFmt<'_, 'a, 'b>
pub fn frame(&mut self) -> BacktraceFrameFmt<'_, 'a, 'b>
Adds a frame to the backtrace output.
This commit returns an RAII instance of a BacktraceFrameFmt
which can be used
to actually print a frame, and on destruction it will increment the
frame counter.
sourcepub fn finish(&mut self) -> Result
pub fn finish(&mut self) -> Result
Completes the backtrace output.
This is currently a no-op but is added for future compatibility with backtrace formats.