serde_valid/validation/
error.rs

1mod array_erros;
2mod errors;
3mod format;
4mod into_error;
5mod message;
6mod object_errors;
7
8pub use crate::error::{
9    EnumerateError, ExclusiveMaximumError, ExclusiveMinimumError, MaxItemsError, MaxLengthError,
10    MaxPropertiesError, MaximumError, MinItemsError, MinLengthError, MinPropertiesError,
11    MinimumError, MultipleOfError, PatternError, UniqueItemsError,
12};
13pub use array_erros::ArrayErrors;
14pub use errors::Errors;
15pub use format::{Format, FormatDefault};
16use indexmap::IndexMap;
17pub use into_error::IntoError;
18pub use message::Message;
19pub use object_errors::ObjectErrors;
20
21#[derive(Debug, Clone, serde::Serialize, thiserror::Error)]
22#[serde(untagged)]
23pub enum Error {
24    #[error("{0}")]
25    #[serde(serialize_with = "serialize_error_message")]
26    Minimum(Message<MinimumError>),
27
28    #[error("{0}")]
29    #[serde(serialize_with = "serialize_error_message")]
30    Maximum(Message<MaximumError>),
31
32    #[error("{0}")]
33    #[serde(serialize_with = "serialize_error_message")]
34    ExclusiveMinimum(Message<ExclusiveMinimumError>),
35
36    #[error("{0}")]
37    #[serde(serialize_with = "serialize_error_message")]
38    ExclusiveMaximum(Message<ExclusiveMaximumError>),
39
40    #[error("{0}")]
41    #[serde(serialize_with = "serialize_error_message")]
42    MultipleOf(Message<MultipleOfError>),
43
44    #[error("{0}")]
45    #[serde(serialize_with = "serialize_error_message")]
46    MinLength(Message<MinLengthError>),
47
48    #[error("{0}")]
49    #[serde(serialize_with = "serialize_error_message")]
50    MaxLength(Message<MaxLengthError>),
51
52    #[error("{0}")]
53    #[serde(serialize_with = "serialize_error_message")]
54    Pattern(Message<PatternError>),
55
56    #[error("{0}")]
57    #[serde(serialize_with = "serialize_error_message")]
58    MinItems(Message<MinItemsError>),
59
60    #[error("{0}")]
61    #[serde(serialize_with = "serialize_error_message")]
62    MaxItems(Message<MaxItemsError>),
63
64    #[error("{0}")]
65    #[serde(serialize_with = "serialize_error_message")]
66    UniqueItems(Message<UniqueItemsError>),
67
68    #[error("{0}")]
69    #[serde(serialize_with = "serialize_error_message")]
70    MinProperties(Message<MinPropertiesError>),
71
72    #[error("{0}")]
73    #[serde(serialize_with = "serialize_error_message")]
74    MaxProperties(Message<MaxPropertiesError>),
75
76    #[error("{0}")]
77    #[serde(serialize_with = "serialize_error_message")]
78    Enumerate(Message<EnumerateError>),
79
80    #[error("{0}")]
81    #[serde(serialize_with = "serialize_error_message")]
82    Custom(String),
83
84    #[error(transparent)]
85    Items(ArrayErrors),
86
87    #[error(transparent)]
88    Properties(ObjectErrors),
89
90    #[cfg(feature = "fluent")]
91    #[error("{0}")]
92    #[serde(serialize_with = "serialize_error_message")]
93    Fluent(crate::fluent::Message),
94}
95
96fn serialize_error_message<T, S>(message: &T, serializer: S) -> Result<S::Ok, S::Error>
97where
98    T: std::fmt::Display,
99    S: serde::Serializer,
100{
101    serializer.serialize_str(&message.to_string())
102}
103
104pub type VecErrors<E = crate::validation::Error> = Vec<E>;
105pub type ItemErrorsMap<E> = IndexMap<usize, Errors<E>>;
106pub type ItemVecErrorsMap<E> = IndexMap<usize, VecErrors<E>>;
107pub type PropertyErrorsMap<E> = IndexMap<String, Errors<E>>;
108pub type PropertyVecErrorsMap<E> = IndexMap<String, VecErrors<E>>;