MultiValidator

Struct MultiValidator 

Source
pub struct MultiValidator(pub Vec<Validator>);
Expand description

“Multi” validator that checks with several validators at once.

This validator will accept any value that passes at least one of its contained validators. This can be used like an “any of” operator, or a logical OR of validators.

When this validator is used, the contained validators are checked in order, passing when the first contained validator passes. When performing Entry validation, this can mean that a linked document may be added to the list of documents needed for final validation, even if another contained validator (later in the list) would also pass without it.

When going through the contained validators, some rules are followed to avoid possible cyclic references:

  • Contained Multi-validators are skipped
  • Contained Ref validators that refer to a Multi-validator are skipped.
  • Contained Ref validators that refer to a Ref validator are skipped.

More succintly, the banned sequences are: Multi->Multi, Multi->Ref->Multi, Multi->Ref->Ref.

§Query Checking

The validator for a query must be accepted by at least one of the validators in the Multi-validator. Contained validators that violate the cyclic reference rules are skipped (see above).

Tuple Fields§

§0: Vec<Validator>

Implementations§

Source§

impl MultiValidator

Source

pub fn new() -> Self

Make a new validator with the default configuration.

Source

pub fn push(self, validator: Validator) -> Self

Add a new validator to the list.

Source

pub fn build(self) -> Validator

Build this into a Validator enum.

Source

pub fn iter(&self) -> Iter<'_, Validator>

Iterate over all the contained validators.

Trait Implementations§

Source§

impl Clone for MultiValidator

Source§

fn clone(&self) -> MultiValidator

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MultiValidator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MultiValidator

Source§

fn default() -> MultiValidator

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MultiValidator

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for MultiValidator

Source§

fn eq(&self, other: &MultiValidator) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for MultiValidator

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for MultiValidator

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,