serde_valid/validation/
error.rs1mod 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>>;