Crate eoe

Crate eoe 

Source
Expand description

This crate provides utilities for exiting processes on errors gracefully, leveraging anyhow to display detailed error context and chained messages.

§Examples

Exiting on error:

use anyhow::{Context, anyhow};
use eoe::ExitOnError;

Err::<(), _>(anyhow!("Mm-noom-ba-deh"))
    .context("Doom-boom-ba-beh")
    .context("Doo-boo-boom-ba-beh-beh")
    .exit_on_error();
Show output
error: Doo-boo-boom-ba-beh-beh
caused by: Doom-boom-ba-beh
caused by: Mm-noom-ba-deh

Or if you prefer the word quit:

use anyhow::{Context, anyhow};
use eoe::QuitOnError;

Err::<(), _>(anyhow!("Mm-ba-ba-beh, mm-ba-ba-beh"))
    .context("Dee-day-da, ee-day-da")
    .quit_on_error();
Show output
error: Dee-day-da, ee-day-da
caused by: Mm-ba-ba-beh, mm-ba-ba-beh

The output style is customizable:

use eoe::{ExitOnError, Segment, Style};

let _ = eoe::ERROR.set(Segment {
    style: Style::new().bold().blue(),
    value: "Watchin' some good friends screamin'",
});
let _ = eoe::SEP.set(Segment {
    style: Style::new(),
    value: " 😱 ",
});
let _ = eoe::MESSAGE_STYLE.set(Style::new().italic().yellow());
let _ = eoe::MESSAGE_ON_NONE.set("Let me out");

None::<()>.exit_on_error();
Show output
Watchin' some good friends screamin' 😱 Let me out

Structs§

Segment
A labeled message segment.
Style
A pre-computed style that can be applied to a struct using [OwoColorize::style].

Statics§

CAUSED_BY
The caused by label.
ERROR
The error label.
MESSAGE_ON_NONE
The message to display when exiting on None.
MESSAGE_STYLE
The style of messages.
SEP
The separator between the label and the message.

Traits§

ExitOnError
A trait for exiting processes gracefully.
QuitOnError
Well, if you prefer the word quit to exit.