Struct BacktraceFmt
pub struct BacktraceFmt<'a, 'b> { pub(in ::backtrace_rs::print) fmt: &'a mut Formatter<'b>, pub(in ::backtrace_rs::print) frame_index: usize, pub(in ::backtrace_rs::print) format: PrintFmt, pub(in ::backtrace_rs::print) print_path: &'a mut dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b }
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: usizeformat: PrintFmtprint_path: &'a mut dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b
Implementations
impl<'a, 'b> BacktraceFmt<'a, 'b>
fn new(fmt: &'a mut Formatter<'b>, format: PrintFmt, print_path: &'a mut dyn FnMut(&mut Formatter<'_>, BytesOrWideString<'_>) -> Result + 'b) -> SelfCreate a new
BacktraceFmtwhich will write output to the providedfmt.The
formatargument will control the style in which the backtrace is printed, and theprint_pathargument will be used to print theBytesOrWideStringinstances of filenames. This type itself doesn't do any printing of filenames, but this callback is required to do so.fn add_context(&mut self) -> ResultPrints 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.fn frame(&mut self) -> BacktraceFrameFmt<'_, 'a, 'b>Adds a frame to the backtrace output.
This commit returns an RAII instance of a
BacktraceFrameFmtwhich can be used to actually print a frame, and on destruction it will increment the frame counter.fn finish(&mut self) -> ResultCompletes the backtrace output.
This is currently a no-op but is added for future compatibility with backtrace formats.
fn message(&mut self, msg: &str) -> ResultInserts a message in the backtrace output.
This allows information to be inserted between frames, and won't increment the
frame_indexunlike theframemethod.fn formatter(&mut self) -> &mut Formatter<'b>Return the inner formatter.
This is used for writing custom information between frames with
write!andwriteln!, and won't increment theframe_indexunlike theframemethod.
Auto Trait Implementations
impl<'a, 'b> !RefUnwindSafe for BacktraceFmt<'a, 'b>
impl<'a, 'b> !Send for BacktraceFmt<'a, 'b>
impl<'a, 'b> !Sync for BacktraceFmt<'a, 'b>
impl<'a, 'b> !UnwindSafe for BacktraceFmt<'a, 'b>
impl<'a, 'b> Freeze for BacktraceFmt<'a, 'b>
impl<'a, 'b> Unpin for BacktraceFmt<'a, 'b>
impl<'a, 'b> UnsafeUnpin for BacktraceFmt<'a, 'b>
Blanket Implementations
impl<T> Any for BacktraceFmt<'a, 'b>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for BacktraceFmt<'a, 'b>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for BacktraceFmt<'a, 'b>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for BacktraceFmt<'a, 'b>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> SizeHint for BacktraceFmt<'a, 'b>
where
T: ?Sized,
fn lower_bound(&self) -> usizefn upper_bound(&self) -> Option<usize>
impl<T> SizedTypeProperties for BacktraceFmt<'a, 'b>
impl<T, U> Into<U> for BacktraceFmt<'a, 'b>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for BacktraceFmt<'a, 'b>
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for BacktraceFmt<'a, 'b>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>