valida 1.1.2

Modular validation system for Rust with support for nested structures and localization.
Documentation
use crate::core::field_builder::main::FieldBuilder;
use crate::core::rules::numeric::greater_than::GreaterThan;
use crate::core::rules::numeric::less_than::LessThan;
use crate::core::rules::numeric::max_value::MaxValue;
use crate::core::rules::numeric::min_value::MinValue;
use crate::core::rules::numeric::negative::Negative;
use crate::core::rules::numeric::negative_or_zero::NegativeOrZero;
use crate::core::rules::numeric::positive::Positive;
use crate::core::rules::numeric::positive_or_zero::PositiveOrZero;
use crate::core::rules::numeric::range::Range;
use crate::core::rules::value_ref::ValueRef;
use std::error::Error;

impl<'a, T, V, E> FieldBuilder<'a, T, V, E>
where
    V: ValueRef,
    V::Target: PartialOrd + ToString + Send + Sync + 'static,
    E: Error + Send + Sync + 'static,
{
    pub fn greater_than(mut self, min: V::Target) -> Self {
        self.rules.rules.push(Box::new(GreaterThan { min }));
        self
    }

    pub fn less_than(mut self, max: V::Target) -> Self {
        self.rules.rules.push(Box::new(LessThan { max }));
        self
    }

    pub fn max_value(mut self, max: V::Target) -> Self {
        self.rules.rules.push(Box::new(MaxValue { max }));
        self
    }

    pub fn min_value(mut self, min: V::Target) -> Self {
        self.rules.rules.push(Box::new(MinValue { min }));
        self
    }

    pub fn max(mut self, value: V::Target) -> Self {
        self.rules.rules.push(Box::new(MaxValue { max: value }));
        self
    }

    pub fn min(mut self, value: V::Target) -> Self {
        self.rules.rules.push(Box::new(MinValue { min: value }));
        self
    }

    pub fn range(mut self, min: V::Target, max: V::Target) -> Self {
        self.rules.rules.push(Box::new(Range { min, max }));
        self
    }
}

impl<'a, T, V, E> FieldBuilder<'a, T, V, E>
where
    V: ValueRef,
    V::Target: num_traits::Zero + PartialOrd + ToString + Send + Sync + 'static,
    E: Error + Send + Sync + 'static,
{
    pub fn negative(mut self) -> Self {
        self.rules.rules.push(Box::new(Negative {}));
        self
    }

    pub fn negative_or_zero(mut self) -> Self {
        self.rules.rules.push(Box::new(NegativeOrZero {}));
        self
    }

    pub fn positive(mut self) -> Self {
        self.rules.rules.push(Box::new(Positive {}));
        self
    }

    pub fn positive_or_zero(mut self) -> Self {
        self.rules.rules.push(Box::new(PositiveOrZero {}));
        self
    }
}