pub struct ValidationError { /* private fields */ }Expand description
A lightweight validation failure with a machine-readable code and a human-readable message.
ValidationError is the default error returned by the simple validators in
this crate and the recommended starting point for hand-written ones. It is
Copy, holds no owned data, and never allocates, which keeps it usable on a
hot path and in no_std builds alike.
The code is meant to be a stable, lowercase identifier you can match on
("non_empty", "out_of_range"); the message is meant for logs and
end-user diagnostics. Keep the code stable across releases even if you reword
the message.
Under the std feature it implements std::error::Error, so it slots into
? and Box<dyn Error> chains without ceremony.
§Examples
Construct one directly and inspect its parts:
use type_lib::ValidationError;
let err = ValidationError::new("non_empty", "value must not be empty");
assert_eq!(err.code(), "non_empty");
assert_eq!(err.message(), "value must not be empty");Branch on the stable code while showing the message to a human:
use type_lib::ValidationError;
fn describe(err: &ValidationError) -> &'static str {
match err.code() {
"non_empty" => "the field was left blank",
"out_of_range" => "the number is outside the allowed range",
_ => "the value is invalid",
}
}
let err = ValidationError::new("out_of_range", "expected 1..=10, got 42");
assert_eq!(describe(&err), "the number is outside the allowed range");Format it for display (the Display output is "<code>: <message>"):
use type_lib::ValidationError;
let err = ValidationError::new("non_empty", "value must not be empty");
assert_eq!(err.to_string(), "non_empty: value must not be empty");Implementations§
Source§impl ValidationError
impl ValidationError
Sourcepub const fn new(code: &'static str, message: &'static str) -> Self
pub const fn new(code: &'static str, message: &'static str) -> Self
Creates a validation error from a stable code and a human-readable
message.
This is a const fn, so errors can be declared as associated constants
or statics and reused without per-call construction cost.
§Examples
use type_lib::ValidationError;
const EMPTY: ValidationError =
ValidationError::new("non_empty", "value must not be empty");
assert_eq!(EMPTY.code(), "non_empty");Sourcepub const fn code(&self) -> &'static str
pub const fn code(&self) -> &'static str
Returns the stable, machine-readable error code.
Use this to branch programmatically; it is intended to stay stable across releases even when the message changes.
§Examples
use type_lib::ValidationError;
let err = ValidationError::new("non_empty", "value must not be empty");
assert_eq!(err.code(), "non_empty");Sourcepub const fn message(&self) -> &'static str
pub const fn message(&self) -> &'static str
Returns the human-readable message.
Intended for logs and diagnostics, not for matching; the wording may change between releases.
§Examples
use type_lib::ValidationError;
let err = ValidationError::new("non_empty", "value must not be empty");
assert_eq!(err.message(), "value must not be empty");Trait Implementations§
Source§impl Clone for ValidationError
impl Clone for ValidationError
Source§fn clone(&self) -> ValidationError
fn clone(&self) -> ValidationError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ValidationError
impl Debug for ValidationError
Source§impl Display for ValidationError
impl Display for ValidationError
Source§impl Error for ValidationError
Available on crate feature std only.
impl Error for ValidationError
std only.1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl Hash for ValidationError
impl Hash for ValidationError
Source§impl PartialEq for ValidationError
impl PartialEq for ValidationError
Source§fn eq(&self, other: &ValidationError) -> bool
fn eq(&self, other: &ValidationError) -> bool
self and other values to be equal, and is used by ==.