[−][src]Crate vale
Vale stands for Valid Entity, and is a simple library that provides entity validation through
either annotations, or through a Fluent-style implementation. At the core of the library is the
vale::Validate
trait, which implies that a piece of data can be validated. The library also
offers supoort for the rocket
webframework. If support for more webframeworks is desired, it
should be fairly trivial to implement support for those frameworks.
Example
This example shows how to derive the validation trait
use vale::Validate; #[derive(Validate)] struct Entity { #[validate(gt(0))] id: i32, #[validate(len_lt(5), with(add_element))] others: Vec<i32>, #[validate(eq("hello world"))] msg: String, } fn add_element(v: &mut Vec<i32>) -> bool { v.push(3); true } fn main() { let mut e = get_entity(); if let Err(errs) = e.validate() { println!("The following validations failed: {:?}", errs); } }
It is also possible to use fluent-style validation:
struct Entity { id: i32, others: Vec<i32>, msg: String, } impl vale::Validate for Entity { #[vale::ruleset] fn validate(&mut self) -> vale::Result { vale::rule!(self.id > 0, "`id` is nonpositive!"); vale::rule!(self.others.len() < 5, "Too many others"); } }
Macros
rule | The rule macro is used to create new rules that dictate how a field of the validated entity should be tranformed and validated. |
Structs
Valid | A struct that can be used in |
Traits
Validate | The core trait of this library. Any entity that implements |
Type Definitions
Result | A type alias for the |
Attribute Macros
ruleset | Use this macro to annotate yout implementation of |
Derive Macros
Validate | A proc macro used to implement |