macro_rules! unwind_context_with_fmt {
    (
        ( $( $context:tt )* )
        , writer = $writer:expr
        , panic_detector = $panic_detector:expr
        $(, color_scheme = $color_scheme:expr )?
        $(,)?
    ) => { ... };
}
Expand description

Creates UnwindContextWithFmt with a given core::fmt::Write writer, panic detector, color scheme, and a given function or scope context.

If not specified it uses get_default_color_scheme_if_enabled as a default color scheme.

The returned unwind context scope guard value should be kept alive as long as unwind context is needed. If unused, the UnwindContextWithFmt will immediately drop.

Passed context arguments are lazily formatted. The created wrapper takes ownership of the given arguments, so it may be necessary to use value references, clones, or pass the pre-prepared string representation. It also supports the ... placeholder to show that some values have been omitted.

For more information about context argument, see build_unwind_context_data.

§Examples

use unwind_context::unwind_context_with_fmt;

fn example1(foo: u32, bar: &str, secret: &str, custom_writer: &mut String) {
    let _ctx = unwind_context_with_fmt!(
        (fn(foo, bar, ...)),
        writer = custom_writer,
        panic_detector = unwind_context::StdPanicDetector,
        color_scheme = None,
    );
    // ...
}
use unwind_context::{unwind_context_with_fmt, AnsiColorScheme};

fn example2<W: core::fmt::Write, P: unwind_context::PanicDetector>(
    foo: u32,
    bar: &str,
    custom_writer: &mut W,
    custom_panic_detector: P,
    custom_color_scheme: &'static AnsiColorScheme,
) {
    let _ctx = unwind_context_with_fmt!(
        (fn(foo, bar)),
        writer = custom_writer,
        panic_detector = custom_panic_detector,
        color_scheme = Some(custom_color_scheme),
    );
    // ...
}