Testing and Diagnostics Capstone
Result Diagnostic
Explain Validation Failure
Result lets validation code return either a clean value or a diagnostic message that callers can display.
Program
Play the program to choose a name and see the validation diagnostic.
result_validation_diagnostic.rs
fn main() {
let name = ;
match validate_name(name) {
Ok(value) => println!("ok:{value}"),
Err(message) => println!("err:{message}"),
}
}
fn validate_name(name: &str) -> Result<&str, &'static str> {
if name.is_empty() {
Err("empty name")
} else if name == "admin" {
Err("reserved name")
} else {
Ok(name)
}
}
fn main() {
let name = ;
match validate_name(name) {
Ok(value) => println!("ok:{value}"),
Err(message) => println!("err:{message}"),
}
}
fn validate_name(name: &str) -> Result<&str, &'static str> {
if name.is_empty() {
Err("empty name")
} else if name == "admin" {
Err("reserved name")
} else {
Ok(name)
}
}
fn main() {
let name = ;
match validate_name(name) {
Ok(value) => println!("ok:{value}"),
Err(message) => println!("err:{message}"),
}
}
fn validate_name(name: &str) -> Result<&str, &'static str> {
if name.is_empty() {
Err("empty name")
} else if name == "admin" {
Err("reserved name")
} else {
Ok(name)
}
}
Result
`Ok` carries the validated value, while `Err` carries the diagnostic.
guard
The validation function checks one rule at a time before accepting the input.
display
The caller decides how to report either branch to the user.