Trait type_rules::Rule
source · [−]Expand description
Define a rule for a type
By implementing Rule
for a type you define how
it will be used to constraint a type T
Example
use type_rules::prelude::*;
struct IsEven();
impl Rule<i32> for IsEven {
fn check(&self, value: &i32) -> Result<(), String> {
if value % 2 == 0 {
Ok(())
} else {
Err("Value is not even".into())
}
}
}
#[derive(Validator)]
struct MyInteger(#[rule(IsEven())] i32);
Required Methods
Implementors
impl<'a, T, U> Rule<U> for All<'a, T> where
U: IntoIterator,
for<'b> &'b U: IntoIterator<Item = &'b U::Item>,
T: Rule<<U as IntoIterator>::Item>,
impl<'a, T, U> Rule<U> for Any<'a, T> where
U: IntoIterator,
for<'b> &'b U: IntoIterator<Item = &'b U::Item>,
T: Rule<<U as IntoIterator>::Item>,
impl<'a, T, U> Rule<U> for Eval<'a, T> where
T: Fn(&U) -> bool,
impl<'a, T, U> Rule<U> for In<'a, T> where
T: IntoIterator,
for<'b> &'b T: IntoIterator<Item = &'b T::Item>,
U: PartialEq<T::Item>,
impl<'a, T: AsRef<str> + ?Sized> Rule<T> for RegEx<'a>
Available on crate feature
regex
only.