# Zisvalidator
Zisvalidator is designed for validating input struct or enum in web or other scence.
Reference to [Serde] and [Validator].
[Serde]: https://docs.serde.rs/serde/index.html
[Validator]: https://github.com/Keats/validator
## EXAMPLE
### Validate for Struct and Enum
```rust
#[derive(Validate)]
struct S(String); //validate tuple struct with 1 element
#[derive(Validate)]
struct S(String,u64,); //validate tuple struct with mulitple elements
#[derive(Validate)]
struct S{ //validate struct with fields
str:String
}
#[derive(Validate)]
enum E{ //validate enum
S(String), //validate tuple varient with 1 element
Tuple(String,String,), //validate tuple varient with multiple element
Nested{ //validate varient with fields
field:String,
}
}
```
### Validate Arrribute
#### Container Attribute
* #[validate(schema = "foo")]
Validate type T by customer by function `foo` as `Fn(t:T) -> Result<(),ValidatorError)`
* #[validate(custom = "foo")]
Valid for tuple struct.For example,for type `struct S(String,String)`,validate by function `foo` as `Fn(t:&String) -> Result<(),ValidatorError>`
* #[validate(range = "start..end")]
Valid for tuple struct.Validate for elements' range.
#### Field Attribute
* #[validate(range = "start..end")]
Validate for fields' range.
* #[validate(custom = "foo")]
Validate by function `foo` as `Fn(t:&T) -> Result<(),ValidatorError>`.
#### Variant Attribute
* #[validate(range = "start..end")]
Validate for variants' range.
* #[validate(custom = "foo")]
Validate by function `foo` as `Fn(t:&T) -> Result<(),ValidatorError>`.