pub struct ValidationError { /* private fields */ }Expand description
One or more validation failures collected during validation.
ValidationError is designed for multi-field struct validation where all
fields should be checked and all violations reported together. For
single-value validation, a simpler error type may be more appropriate.
Requires the alloc feature (enabled by default via std), since it is
backed by Vec<Violation>.
Implementations§
Source§impl ValidationError
impl ValidationError
Sourcepub fn new(message: &'static str) -> Self
pub fn new(message: &'static str) -> Self
Creates a ValidationError with a single unnamed violation.
Sourcepub fn field(field: &'static str, message: &'static str) -> Self
pub fn field(field: &'static str, message: &'static str) -> Self
Creates a ValidationError with a single named field violation.
Sourcepub fn empty() -> Self
pub fn empty() -> Self
Creates an empty ValidationError. Useful for building up violations.
Always check is_empty before returning this as
Err. Returning an empty ValidationError is valid Rust but conveys
no information to the caller.
Sourcepub fn with(self, violation: Violation) -> Self
pub fn with(self, violation: Violation) -> Self
Adds a violation and returns self for chaining.
Sourcepub fn require(self, condition: bool, violation: Violation) -> Self
pub fn require(self, condition: bool, violation: Violation) -> Self
Records violation only when condition is false, and returns self
for chaining. A true condition means the rule held, so nothing is added.
Pair this with finish to express multi-field validation
without the easy-to-forget final emptiness check:
use reliakit_validate::{ValidationError, Violation};
let result = ValidationError::empty()
.require(!"".is_empty(), Violation::with_field("name", "must not be empty"))
.require(15 >= 18, Violation::with_field("age", "must be at least 18"))
.finish();
assert_eq!(result.unwrap_err().len(), 2);Sourcepub fn require_field(
self,
condition: bool,
field: &'static str,
message: &'static str,
) -> Self
pub fn require_field( self, condition: bool, field: &'static str, message: &'static str, ) -> Self
Sourcepub fn finish(self) -> ValidateResult
pub fn finish(self) -> ValidateResult
Converts the accumulated violations into a result: Ok(()) when there
are none, otherwise Err(self).
This removes the footgun of returning an empty ValidationError as an
error (see empty).
Sourcepub fn violations(&self) -> &[Violation]
pub fn violations(&self) -> &[Violation]
Returns all violations.
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
Available on crate feature alloc only.
impl Display for ValidationError
alloc only.impl Eq 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 Extend<Violation> for ValidationError
Available on crate feature alloc only.
impl Extend<Violation> for ValidationError
alloc only.Source§fn extend<I: IntoIterator<Item = Violation>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = Violation>>(&mut self, iter: I)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl From<&'static str> for ValidationError
Available on crate feature alloc only.
impl From<&'static str> for ValidationError
alloc only.Source§impl From<Violation> for ValidationError
Available on crate feature alloc only.
impl From<Violation> for ValidationError
alloc only.Source§impl FromIterator<Violation> for ValidationError
Available on crate feature alloc only.
impl FromIterator<Violation> for ValidationError
alloc only.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 ==.