serde_valid 2.0.3

JSON Schema based validation tool using serde.
Documentation
mod max_items;
mod min_items;
mod unique_items;

pub use max_items::ValidateMaxItems;
pub use min_items::ValidateMinItems;
pub use unique_items::ValidateUniqueItems;

use crate::{MaxItemsError, MinItemsError};

macro_rules! impl_validate_array_length_items {
    ($ValidateTrait:ident, $validate_method:ident, $Error:ident) => {
        impl<T> $ValidateTrait for Option<T>
        where
            T: $ValidateTrait,
        {
            fn $validate_method(&self, limit: usize) -> Result<(), $Error> {
                match self {
                    Some(value) => value.$validate_method(limit),
                    None => Ok(()),
                }
            }
        }
    };
}

impl_validate_array_length_items!(ValidateMaxItems, validate_max_items, MaxItemsError);
impl_validate_array_length_items!(ValidateMinItems, validate_min_items, MinItemsError);