Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Setup outside of main

emit is typically configured in your main function, but that might not be feasible for some applications. In these cases, you can run emit's setup in a function and flush it deliberately at some later point:

#![allow(unused)]
fn main() {
extern crate emit;
extern crate emit_term;
fn diagnostics_init() {
    let _ = emit::setup()
        .emit_to(emit_term::stdout())
        .try_init();
}

fn diagnostics_flush() {
    emit::blocking_flush(std::time::Duration::from_secs(5));
}
}

Calling try_init() ensures you don't panic even if setup is called multiple times.

emit doesn't automatically flush or de-initialize its runtime when Init goes out of scope so it's safe to let it drop before your application exits.