Skip to main content

async_graphql/validators/
mod.rs

1mod chars_max_length;
2mod chars_min_length;
3mod max_items;
4mod max_length;
5mod maximum;
6mod min_items;
7mod min_length;
8mod minimum;
9mod multiple_of;
10mod regex;
11
12pub use chars_max_length::chars_max_length;
13pub use chars_min_length::chars_min_length;
14pub use max_items::max_items;
15pub use max_length::max_length;
16pub use maximum::maximum;
17pub use min_items::min_items;
18pub use min_length::min_length;
19pub use minimum::minimum;
20pub use multiple_of::multiple_of;
21
22pub use self::regex::regex;
23use crate::{InputType, InputValueError};
24
25/// Represents a custom input value validator.
26pub trait CustomValidator<T: InputType> {
27    /// Check the value is valid.
28    fn check(&self, value: &T) -> Result<(), InputValueError<T>>;
29}
30
31impl<T, F, E> CustomValidator<T> for F
32where
33    T: InputType,
34    E: Into<InputValueError<T>>,
35    F: Fn(&T) -> Result<(), E>,
36{
37    #[inline]
38    fn check(&self, value: &T) -> Result<(), InputValueError<T>> {
39        (self)(value).map_err(Into::into)
40    }
41}