zisvalidator/
lib.rs

1//! # Zisvalidator
2//!
3//! Zisvalidator is designed for validating input struct or enum in web or other scence.
4//!
5//! Reference to [Serde] and [Validator].
6//!
7//! [Serde]: https://docs.serde.rs/serde/index.html
8//! [Validator]: https://github.com/Keats/validator
9//!
10//!
11//!
12//!
13//!
14//!
15//!
16//!
17//!
18//!
19//!
20//!
21//!
22//!
23//!
24//!
25//!
26//!
27//!
28//!
29//!
30//!
31//!
32//!
33//!
34//!
35
36pub mod error;
37pub mod impls;
38pub trait Validate {
39    fn validate(&self) -> Result<(), error::ValidatorError>;
40}
41
42#[cfg(feature = "derive")]
43pub use zisvalidator_derive::Validate;
44
45#[macro_export]
46macro_rules! validator_error {
47    ($field:expr,$attr:expr,$value:expr) => {{
48        ::std::format!("invalid `{}`: expected {} `{:?}`", $field, $attr, $value)
49    }};
50}
51
52pub trait ValidateRange<F:?Sized, R,Idx:?Sized>
53{
54    fn validate_range(&self, field: &F, range: &R) -> Result<(), error::ValidatorError>;
55}
56
57pub trait ValidateSeqRange<F:?Sized, R,Idx:?Sized>
58{
59    fn validate_seq_range(self, field: &F, range: &R) -> Result<(), error::ValidatorError>;
60}