Struct fog_pack::validator::ArrayValidator[][src]

pub struct ArrayValidator {
    pub comment: String,
    pub contains: Vec<Validator>,
    pub items: Box<Validator>,
    pub prefix: Vec<Validator>,
    pub max_len: u32,
    pub min_len: u32,
    pub in_list: Vec<Vec<Value>>,
    pub nin_list: Vec<Vec<Value>>,
    pub unique: bool,
    pub query: bool,
    pub array: bool,
    pub contains_ok: bool,
    pub unique_ok: bool,
    pub size: bool,
}

Validator for arrays.

This validator type will only pass array values. Validation passes if:

  • If the in list is not empty, the array must be among the arrays in the list.
  • The array must not be among the arrays in the nin list.
  • The arrays’s length is less than or equal to the value in max_len.
  • The arrays’s length is greater than or equal to the value in min_len.
  • If unique is true, the array items are all unique.
  • For each validator in the contains list, at least one item in the array passes.
  • Each item in the array is checked with a validator at the same index in the prefix array. All validators must pass. If there is no validator at the same index, the validator in items must pass. If a validator is not used, it passes automatially.

Defaults

Fields that aren’t specified for the validator use their defaults instead. The defaults for each field are:

  • comment: “”
  • contains: empty
  • items: Validator::Any
  • prefix: empty
  • max_len: u32::MAX
  • min_len: u32::MIN
  • in_list: empty
  • nin_list: empty
  • unique: false
  • query: false
  • array: false
  • contains_ok: false
  • unique_ok: false
  • size: false

Query Checking

Queries for arrays are only allowed to use non-default values for each field if the corresponding query permission is set in the schema’s validator:

  • query: in and nin lists
  • array: prefix and items
  • contains_ok: contains
  • unique_ok: unique
  • size: max_len and min_len

In addition, sub-validators in the query are matched against the schema’s sub-validators:

  • Each validator in contains is checked against all of the schema’s prefix validators, as well as its items validator.
  • The items validator is checked against the schema’s `items’ validator
  • The prefix validators are checked against the schema’s prefix validators. Unmatched query validators are checked against the schema’s items validator.

Fields

comment: String

An optional comment explaining the validator.

contains: Vec<Validator>

For each validator in this array, at least one item in the array must pass the validator.

items: Box<Validator>

A validator that each item in the array must pass, unless it is instead checked by prefix.

prefix: Vec<Validator>

An array of validators, which are matched up against the items in the array. Unmatched validators automatically pass, while unmatched items are checked against the items Validator.

max_len: u32

The maximum allowed number of items in the array.

min_len: u32

The minimum allowed number of items in the array.

in_list: Vec<Vec<Value>>

A vector of specific allowed values, stored under the in field. If empty, this vector is not checked against.

nin_list: Vec<Vec<Value>>

A vector of specific unallowed values, stored under the nin field.

unique: bool

If set, all items in the array must be unique.

query: bool

If true, queries against matching spots may have values in the in or nin lists.

array: bool

If true, queries against matching spots may use items and prefix.

contains_ok: bool

If true, queries against matching spots may use contains.

unique_ok: bool

If true, queries against matching spots may use unique.

size: bool

If true, queries against matching spots may use max_len and min_len.

Implementations

impl ArrayValidator[src]

pub fn new() -> Self[src]

Make a new validator with the default configuration.

pub fn comment(self, comment: impl Into<String>) -> Self[src]

Set a comment for the validator.

pub fn contains_add(self, validator: Validator) -> Self[src]

Extend the contains list with another validator

pub fn items(self, items: Validator) -> Self[src]

Set the items validator.

pub fn prefix_add(self, prefix: Validator) -> Self[src]

Extend the prefix list with another validator

pub fn max_len(self, max_len: u32) -> Self[src]

Set the maximum number of allowed bytes.

pub fn min_len(self, min_len: u32) -> Self[src]

Set the minimum number of allowed bytes.

pub fn in_add(self, add: impl Into<Vec<Value>>) -> Self[src]

Add a value to the in list.

pub fn nin_add(self, add: impl Into<Vec<Value>>) -> Self[src]

Add a value to the nin list.

pub fn unique(self, unique: bool) -> Self[src]

Set whether the items in the array must be unique.

pub fn query(self, query: bool) -> Self[src]

Set whether or not queries can use the in and nin lists.

pub fn array(self, array: bool) -> Self[src]

Set whether or not queries can use the items and prefix values.

pub fn contains_ok(self, contains_ok: bool) -> Self[src]

Set whether or not queries can use the contains value.

pub fn unique_ok(self, unique_ok: bool) -> Self[src]

Set whether or not queries can use the unique setting.

pub fn size(self, size: bool) -> Self[src]

Set whether or not queries can use the max_len and min_len values.

pub fn build(self) -> Validator[src]

Build this into a Validator enum.

Trait Implementations

impl Clone for ArrayValidator[src]

impl Debug for ArrayValidator[src]

impl Default for ArrayValidator[src]

impl<'de> Deserialize<'de> for ArrayValidator where
    ArrayValidator: Default
[src]

impl PartialEq<ArrayValidator> for ArrayValidator[src]

impl Serialize for ArrayValidator[src]

impl StructuralPartialEq for ArrayValidator[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

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

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,