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>;