Trait Rule

Source
pub trait Rule<T: ?Sized> {
    // Required method
    fn check(&self, value: &T) -> Result<(), String>;
}
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§

Source

fn check(&self, value: &T) -> Result<(), String>

Implementors§

Source§

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>,

Source§

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>,

Source§

impl<'a, T, U> Rule<U> for Eval<'a, T>
where T: Fn(&U) -> bool,

Source§

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>,

Source§

impl<'a, T: AsRef<str> + ?Sized> Rule<T> for RegEx<'a>

Available on crate feature regex only.
Source§

impl<T> Rule<Vec<T>> for MaxSize

Source§

impl<T> Rule<Vec<T>> for MinMaxSize

Source§

impl<T> Rule<Vec<T>> for MinSize

Source§

impl<T, U, F> Rule<F> for And<T, U>
where T: Rule<F>, U: Rule<F>,

Source§

impl<T, U, F> Rule<F> for Or<T, U>
where T: Rule<F>, U: Rule<F>,

Source§

impl<T, U: Rule<T>> Rule<Option<T>> for Opt<U>

Source§

impl<T: PartialOrd<T>> Rule<T> for MaxRange<T>

Source§

impl<T: PartialOrd<T>> Rule<T> for MinMaxRange<T>

Source§

impl<T: PartialOrd<T>> Rule<T> for MinRange<T>

Source§

impl<T: AsRef<str> + ?Sized> Rule<T> for MaxLength

Source§

impl<T: AsRef<str> + ?Sized> Rule<T> for MinLength

Source§

impl<T: AsRef<str> + ?Sized> Rule<T> for MinMaxLength

Source§

impl<T: Validator> Rule<T> for Validate