async_graphql/validators/
mod.rs1mod chars_max_length;
2mod chars_min_length;
3#[cfg(feature = "email-validator")]
4mod email;
5mod ip;
6mod max_items;
7mod max_length;
8mod maximum;
9mod min_items;
10mod min_length;
11mod minimum;
12mod multiple_of;
13mod regex;
14mod url;
15
16pub use chars_max_length::chars_max_length;
17pub use chars_min_length::chars_min_length;
18#[cfg(feature = "email-validator")]
19pub use email::email;
20pub use ip::ip;
21pub use max_items::max_items;
22pub use max_length::max_length;
23pub use maximum::maximum;
24pub use min_items::min_items;
25pub use min_length::min_length;
26pub use minimum::minimum;
27pub use multiple_of::multiple_of;
28
29pub use self::{regex::regex, url::url};
30use crate::{InputType, InputValueError};
31
32pub trait CustomValidator<T: InputType> {
34 fn check(&self, value: &T) -> Result<(), InputValueError<T>>;
36}
37
38impl<T, F, E> CustomValidator<T> for F
39where
40 T: InputType,
41 E: Into<InputValueError<T>>,
42 F: Fn(&T) -> Result<(), E>,
43{
44 #[inline]
45 fn check(&self, value: &T) -> Result<(), InputValueError<T>> {
46 (self)(value).map_err(Into::into)
47 }
48}