serde_valid/validation/
array.rs

1mod max_items;
2mod min_items;
3mod unique_items;
4
5pub use max_items::ValidateMaxItems;
6pub use min_items::ValidateMinItems;
7pub use unique_items::ValidateUniqueItems;
8
9use crate::{MaxItemsError, MinItemsError};
10
11macro_rules! impl_validate_array_length_items {
12    ($ErrorType:ident) => {
13        paste::paste! {
14            impl<T> [<Validate $ErrorType>] for Option<T>
15            where
16                T: [<Validate $ErrorType>],
17            {
18                fn [<validate_ $ErrorType:snake>] (&self, limit: usize) -> Result<(), [<$ErrorType Error>]> {
19                    match self {
20                        Some(value) => value.[<validate_ $ErrorType:snake>](limit),
21                        None => Ok(()),
22                    }
23                }
24            }
25        }
26    };
27}
28
29impl_validate_array_length_items!(MaxItems);
30impl_validate_array_length_items!(MinItems);