openapi_types/
error.rs

1pub type Result<A> = std::result::Result<A, Error>;
2
3#[derive(Debug)]
4pub enum Error {
5    FieldNotExist { field: String },
6    CannotScanYaml { detail: String },
7    IncompatibleVersion { version: String },
8    TypeMismatch { expected: String, found: String },
9    UnknownDataType { found: String },
10    Enclosed { key: String, causes: Vec<Error> },
11    Multiple { causes: Vec<Error> },
12}
13
14impl Error {
15    pub fn multiple(mut causes: Vec<Self>) -> Self {
16        if causes.len() == 1 {
17            causes.remove(0)
18        } else {
19            Self::Multiple { causes }
20        }
21    }
22}
23
24pub fn by_key(key: impl Into<String>) -> impl FnOnce(Error) -> Error {
25    move |cause| Error::Enclosed {
26        key: key.into(),
27        causes: vec![cause],
28    }
29}
30
31pub fn with_key(key: impl Into<String>) -> impl FnOnce(Vec<Error>) -> Error {
32    move |causes| Error::Enclosed {
33        key: key.into(),
34        causes,
35    }
36}
37
38pub type Output<A> = crate::core::Output<A, Error>;