10 releases
Uses new Rust 2024
| 0.4.1 | Jan 16, 2026 |
|---|---|
| 0.4.0 | Jan 16, 2026 |
| 0.3.3 | Sep 1, 2025 |
| 0.3.2 | Apr 14, 2025 |
| 0.1.1 | Jul 14, 2024 |
#1113 in Rust patterns
Used in 2 crates
14KB
147 lines
Exit on Error
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
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
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
Dependencies
~0.3–2.3MB
~41K SLoC