eoe

Crates.ioeoe
lib.rseoe
version0.3.3
created_at2024-07-09 01:46:28.573365+00
updated_at2025-09-01 19:43:54.918527+00
descriptionThis crate provides utilities for exiting processes on errors gracefully.
homepage
repositoryhttps://github.com/Lingxuan-Ye/eoe
max_upload_size
id1296573
size18,624
Lingxuan Ye (Lingxuan-Ye)

documentation

README

Exit on Error

Crates.io Documentation License

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
Commit count: 17

cargo fmt