yolk/
multi_error.rs

1#[derive(Debug, thiserror::Error, miette::Diagnostic)]
2#[error("{message}")]
3#[diagnostic()]
4pub struct MultiError {
5    message: String,
6    #[related]
7    errors: Vec<miette::Report>,
8}
9
10impl MultiError {
11    pub fn new(message: impl Into<String>, errors: Vec<miette::Report>) -> Self {
12        Self {
13            message: message.into(),
14            errors,
15        }
16    }
17}
18impl From<miette::Report> for MultiError {
19    fn from(report: miette::Report) -> Self {
20        Self {
21            message: "Something went wrong".to_string(),
22            errors: vec![report],
23        }
24    }
25}