pub struct Validator { /* private fields */ }Expand description
Collects rule failures. Rules run in order and stop at a field’s first
failure; rules other than required and accepted skip empty values.
Implementations§
Source§impl Validator
impl Validator
Sourcepub fn in_lang(self, lang: &Lang) -> Self
pub fn in_lang(self, lang: &Lang) -> Self
Messages and field names in lang, from the app’s lang file
(renox.validation.*, renox.validation.attributes.*), e.g. for
rules run in a handler or a command: Validator::new().in_lang(&lang).
Sourcepub fn each<T: FieldValue>(
&mut self,
name: &str,
items: &[T],
rules: impl for<'a> Fn(Field<'a>) -> Field<'a>,
)
pub fn each<T: FieldValue>( &mut self, name: &str, items: &[T], rules: impl for<'a> Fn(Field<'a>) -> Field<'a>, )
Rules for each item of a list, e.g. every tag or every uploaded
photo; errors are keyed name.0, name.1, … and labelled
“name #1”, “#2”, …
fn rules(&self, v: &mut Validator) {
v.field("tags", &self.tags).max(5);
v.each("tags", &self.tags, |tag| tag.required().max(20));
v.each("photos", &self.photos, |photo| photo.image().max(2048));
}Sourcepub fn nested<T: Validate>(&mut self, name: &str, items: &[T])
pub fn nested<T: Validate>(&mut self, name: &str, items: &[T])
Each item’s own Validate rules, for a list of structs (e.g. the
lines of an order sent as JSON); errors are keyed name.0.field.
Sourcepub fn distinct<T: FieldValue>(&mut self, name: &str, items: &[T])
pub fn distinct<T: FieldValue>(&mut self, name: &str, items: &[T])
No two items of a list are the same (Laravel’s distinct), e.g. the
emails invited at once; each repeat gets the error, keyed name.i.
Sourcepub fn field<'v>(&'v mut self, name: &str, value: &impl FieldValue) -> Field<'v>
pub fn field<'v>(&'v mut self, name: &str, value: &impl FieldValue) -> Field<'v>
Starts the rules for one field. The label in messages defaults to the
name with _ replaced by spaces.
Sourcepub fn error(&mut self, field: &str, message: impl Into<String>)
pub fn error(&mut self, field: &str, message: impl Into<String>)
Adds an error that no rule covers.
Sourcepub async fn finish(self, db: &Db) -> Result<Errors>
pub async fn finish(self, db: &Db) -> Result<Errors>
Runs the database checks and returns every error (empty when valid).
current_password fails here, as there’s no user to check against,
and the breach check of Password::uncompromised is skipped; use
finish_for for those (Valid<T> does).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Validator
impl RefUnwindSafe for Validator
impl Send for Validator
impl Sync for Validator
impl Unpin for Validator
impl UnsafeUnpin for Validator
impl UnwindSafe for Validator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more