| Crates.io | validit |
| lib.rs | validit |
| version | 0.2.4 |
| created_at | 2023-12-02 16:18:47.715447+00 |
| updated_at | 2023-12-31 01:22:24.00348+00 |
| description | Validate data structures internal state |
| homepage | https://github.com/drmingdrmer/validit |
| repository | https://github.com/drmingdrmer/validit |
| max_upload_size | |
| id | 1056220 |
| size | 56,006 |
Validate variable internal state when the variable is accessed.
Validate for a type T to define how to validate internal state of T.Valid<T: Validate> implements Deref and DerefMut traits, and validates
the internal state when the variable is accessed.For example, If in your program you have a struct Foo(u64) and you want to make sure
that a is always less than to 5, you can implement Validate trait for Foo and use
less! macro to validate a.
struct Foo(u64);
impl validit::Validate for Foo {
fn validate(&self) -> Result<(), Box<dyn std::error::Error>> {
validit::less!(self.0, 5);
Ok(())
}
}
fn main() {
let v1 = Valid::new(Foo(1));
let _x = v1.0; // Good.
let v6 = Foo(6);
let _x = v6.0; // No panic without validation.
let v6 = Valid::new(Foo(6));
let _x = v6.0; // panic: panicked at 'invalid state: expect: self.0(6) < 5(5) ...
}