validatornator/utils/
validation_helpers.rs

1use crate::prelude::{ValidationError, ValidationResult};
2
3pub trait ValidationStarter<T> {
4    fn must(self) -> ValidationResult<T>;
5}
6
7impl<T> ValidationStarter<T> for T {
8    fn must(self) -> ValidationResult<T> {
9        Ok(self)
10    }
11}
12
13pub trait ValidationHelper<T> {
14    fn validate(self, condition: Box<dyn FnOnce(&T) -> bool>, error_message: &str) -> ValidationResult<T>;
15}
16
17impl<T> ValidationHelper<T> for ValidationResult<T> {
18    fn validate(self, condition: Box<dyn FnOnce(&T) -> bool>, error_message: &str) -> ValidationResult<T> {
19        match self {
20            Ok(value) => {
21                if condition(&value) {
22                    Ok(value)
23                } else {
24                    Err(ValidationError::new(error_message))
25                }
26            },
27            error => error
28        }
29    }
30}