validatornator/utils/
validation_helpers.rs1use 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}