Crates.io | error-stack-macros2 |
lib.rs | error-stack-macros2 |
version | 0.1.0 |
created_at | 2025-09-12 22:57:29.627807+00 |
updated_at | 2025-09-22 05:03:19.785755+00 |
description | Community-made procedural macros for error-stack. |
homepage | |
repository | https://github.com/LuisFerLCC/error-stack-macros2 |
max_upload_size | |
id | 1837025 |
size | 37,397 |
error-stack-macros2
Community-made procedural macros for error-stack
.
Here is the same example shown in the error-stack
README
, modified to
use the macros provided by this crate:
use error_stack::{Report, ResultExt};
use error_stack_macros2::Error;
#[derive(Debug, Error)]
#[display("invalid experiment description")]
struct ParseExperimentError;
fn parse_experiment(
description: &str
) -> Result<(u64, u64), Report<ParseExperimentError>> {
let value = description
.parse::<u64>()
.attach_with(|| {
format!("{description:?} could not be parsed as experiment")
})
.change_context(ParseExperimentError)?;
Ok((value, 2 * value))
}
#[derive(Debug, Error)]
#[display("experiment error: could not run experiment")]
struct ExperimentError;
fn start_experiments(
experiment_ids: &[usize],
experiment_descriptions: &[&str],
) -> Result<Vec<u64>, Report<ExperimentError>> {
let experiments = experiment_ids
.iter()
.map(|exp_id| {
let description = experiment_descriptions
.get(*exp_id)
.ok_or_else(|| {
Report::new(ExperimentError)
.attach(format!(
"experiment {exp_id} has no valid description")
)
})?;
let experiment = parse_experiment(description)
.attach(format!("experiment {exp_id} could not be parsed"))
.change_context(ExperimentError)?;
Ok(move || experiment.0 * experiment.1)
})
.collect::<Result<Vec<_>, Report<ExperimentError>>>()
.attach("unable to set up experiments")?;
Ok(experiments.iter().map(|experiment| experiment()).collect())
}
let experiment_ids = &[0, 2];
let experiment_descriptions = &["10", "20", "3o"];
let err = start_experiments(experiment_ids, experiment_descriptions)
.unwrap_err();
assert_eq!(err.to_string(), "experiment error: could not run experiment");
Need help using error-stack-macros2
? Don't hesitate to reach out on
GitHub Discussions!
Before creating an issue, please consider the following:
This crate is not affiliated with the official error-stack
crate or its
maintainers.