Cleanup readme

This commit is contained in:
Nettika 2022-07-21 11:45:33 -07:00
parent 99f08b418d
commit 22676ff512

View file

@ -1,6 +1,6 @@
# Vet # Vet
A library for validation of arbitrary types. Arbitrary type validation.
## Usage ## Usage
@ -46,24 +46,22 @@ impl Vet for Username {
} }
``` ```
Vetted types provide safety guarantees for the types contents. `Valid`-wrapped types provide safety guarantees about their contents.
```rust ```rust
fn main() { fn main() {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
let username = Username(args[1].clone());
// If successfully vetted, the username will be wrapped in a `Valid` struct let username: Username = Username(args[1].clone());
match username.vet() { let username: Result<Valid<Username>, InvalidUsername> = username.vet();
Ok(username) => create_account(username),
Err(InvalidUsername::TooShort) => eprintln!("Username too short! (3 min)"), match username {
Err(InvalidUsername::TooLong) => eprintln!("Username too long! (32 max)"), Ok(n) => create_account(n),
Err(InvalidUsername::InvalidChar) => eprintln!("Username contains invalid characters!"), Err(e) => eprintln!("Invalid username: {:?}", e),
} }
} }
// Any `Valid<Username>` passed is guaranteed // Any `Valid<Username>` passed is guaranteed to be 3-32 alphanumeric characters.
// to have met the arbitrary validation checks.
fn create_account(username: Valid<Username>) { fn create_account(username: Valid<Username>) {
let username = username.into_inner(); // Unwrap let username = username.into_inner(); // Unwrap