Vale

vale on crates.io stripe-rust on docs.rs

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 you're interested in adding support for other frameworks, do not hesitate to open a PR!

Example

This example shows how to derive the validation trait ```rust use vale::Validate;

[derive(Validate)]

struct Entity { #[validate(gt(0))] id: i32, #[validate(lenlt(5), with(addelement))] others: Vec, #[validate(eq("hello world"))] msg: String, }

fn add_element(v: &mut Vec) -> 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: rust struct Entity { id: i32, others: Vec, 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"); } } ```