1#[macro_export]
3macro_rules! validate {
4 ($value:expr, $validator:expr) => {{
5 use $crate::PropertyValidator as _;
6 let validator = $validator;
7 match validator.is_valid(&$value) {
8 true => Ok(()),
9 false => Err(endors::ValidationFailure::new(
10 validator.message(),
11 stringify!($value).to_string(),
12 )),
13 }
14 }};
15 ($value:expr, $validator:expr => $message:expr) => {{
16 use $crate::PropertyValidator as _;
17 let validator = $validator;
18 match validator.is_valid(&$value) {
19 true => Ok(()),
20 false => Err(endors::ValidationFailure::new(
21 $message.to_string(),
22 stringify!($value).to_string(),
23 )),
24 }
25 }};
26}
27
28#[macro_export]
30macro_rules! collect_results {
31 ($($validation:expr),+ $(,)?) => {{
32 let mut errors = Vec::new();
33 $(
34 if let Err(err) = $validation {
35 errors.push(err);
36 }
37 )+
38 if errors.is_empty() {
39 Ok(())
40 } else {
41 Err(endors::Error::new(errors))
42 }
43 }};
44}