futility 0.1.1

Functional Utility types, macros, and functions for common tasks or needs in Rust
Documentation
use color_eyre::eyre::{Report, Result};
use futility::terminate::Terminate;
use std::fs;

fn main() -> Result<()> {
    Terminate::new()
        .install(|| {
            color_eyre::install()?;
            Ok(())
        })
        .panic_with(|_| {
            println!("Oh no a panic!");
        })
        .at_exit(|| {
            println!("The program is in the process exiting.");
        })
        .on_error(|err: Report| {
            eprintln!("Oh no we had an error");
            err.wrap_err("We're at the top of main")
        })
        .execute(run)
}

fn run() -> Result<()> {
    fs::read("non/existant/file")?;
    Ok(())
}