Skip to main content

gideon_mef/
error.rs

1use std::io;
2
3#[derive(Debug, thiserror::Error)]
4#[non_exhaustive]
5pub enum MeFError {
6    #[error("invalid submission ID `{0}`: must be exactly 20 digits")]
7    InvalidSubmissionId(String),
8
9    #[error("submission ID mismatch: manifest says `{manifest}`, got `{actual}`")]
10    SubmissionIdMismatch { manifest: String, actual: String },
11
12    #[error("missing required field: {0}")]
13    MissingField(&'static str),
14
15    #[error("too many submissions: {0} (max 100)")]
16    TooManySubmissions(usize),
17
18    #[error("zip error: {0}")]
19    Zip(#[from] zip::result::ZipError),
20
21    #[error("XML error: {0}")]
22    Xml(#[from] quick_xml::Error),
23
24    #[error("I/O error: {0}")]
25    Io(#[from] io::Error),
26
27    #[error("config error: {0}")]
28    Config(String),
29}
30
31pub type MeFResult<T> = std::result::Result<T, MeFError>;