pub struct MapValidator {Show 14 fields
pub comment: String,
pub max_len: u32,
pub min_len: u32,
pub keys: Option<Box<StrValidator>>,
pub values: Option<Box<Validator>>,
pub req: BTreeMap<String, Validator>,
pub opt: BTreeMap<String, Validator>,
pub in_list: Vec<BTreeMap<String, Value>>,
pub nin_list: Vec<BTreeMap<String, Value>>,
pub same_len: Vec<String>,
pub query: bool,
pub size: bool,
pub map_ok: bool,
pub same_len_ok: bool,
}Expand description
Validator for maps.
This validator will only pass maps, whose keys are strings and values are any valid fog-pack value. Validation passes if:
- If the
inlist is not empty, the map must be among the maps in the list. - The map must not be among the maps in the
ninlist. - The number of key-value pairs in the map is less than or equal to the value in
max_len. - The number of key-value pairs in the map is greater than or equal to the value in
min_len. - There must be a matching key-value in the map for each key-validator pair in
req. - For each key-value pair in the map:
- If the key is in
req, the corresponding validator is used to validate the value. - If the key is not in
reqbut is inopt, the corresponding validator is used to validate the value. - if the key is not in
reqoropt, the validator forvaluesis used to validate the value, and the validator forkeys(if present) is used to validate the key.- If no validator is present for
keys, the key passes. - If there is no validator for
values, validation does not pass.
- If no validator is present for
- If the key is in
- If
same_lenis not empty, the keys it lists must either all not exist, or if any of them exist, they must all exist and their values must all be arrays with the same lengths.
Note how each key-value pair must be validated, so an unlimited collection of key-value pairs
isn’t allowed unless there is a validator present in values.
§Defaults
Fields that aren’t specified for the validator use their defaults instead. The defaults for each field are:
- comment: “”
- max_len: u32::MAX
- min_len: u32::MIN
- keys: None
- values: None
- req: empty
- opt: empty
- same_len: empty
- in_list: empty
- nin_list: empty
- query: false
- size: false
- map_ok: false
- same_len_ok: false
§Query Checking
Queries for maps are only allowed to use non-default values for each field if the corresponding query permission is set in the schema’s validator:
- query:
inandninlists - size:
max_lenandmin_len - map_ok:
req,opt,keys, andvalues - same_len_ok:
same_len
In addition, sub-validators in the query are matched against the schema’s sub-validators:
- The
valuesvalidator is checked against the schema’svaluesvalidator. If no schema validator is present, the query is invalid. - The
keysstring validator is checked against the schema’skeysstring validator. If no schema validator is present, the query is invalid. - The
reqvalidators are checked against the schema’sreq/opt/valuesvalidators, choosing whichever validator is found first. If no validator is found, the check fails. - The
optvalidators are checked against the schema’sreq/opt/valuesvalidators, choosing whichever validator is found first. If no validator is found, the check fails.
Fields§
§comment: StringAn optional comment explaining the validator.
max_len: u32The maximum allowed number of key-value pairs in the map.
min_len: u32The minimum allowed number of key-value pairs in the map.
keys: Option<Box<StrValidator>>The optional sub-validator for unknown keys in the map.
values: Option<Box<Validator>>An optional validator that each value in the map must pass, unless it is instead checked by
a validator in req or opt. Unchecked values cause the map to fail validation.
req: BTreeMap<String, Validator>A map whose keys must all be present in a passing map, and whose validators are used to check the value held by a matching key in the map.
opt: BTreeMap<String, Validator>A map whose keys may be present in a map, and whose validators are used to
check the value held by a matching key in the map, unless it is first checked by a
validator in req.
in_list: Vec<BTreeMap<String, Value>>A vector of specific allowed values, stored under the in field. If empty, this vector is not checked against.
nin_list: Vec<BTreeMap<String, Value>>A vector of specific unallowed values, stored under the nin field.
same_len: Vec<String>A vector of which keys must either not exist, or must all exist and contain arrays of the same lengths.
query: boolIf true, queries against matching spots may have values in the in or nin lists.
size: boolIf true, queries against matching spots may use max_len and min_len.
map_ok: boolIf true, queries against matching spots may use req, opt, keys, and values.
same_len_ok: boolIf true, queries against matching spots may use same_len.
Implementations§
Source§impl MapValidator
impl MapValidator
Sourcepub fn req_add(self, key: impl Into<String>, req: Validator) -> Self
pub fn req_add(self, key: impl Into<String>, req: Validator) -> Self
Add a new validator to the req map.
Sourcepub fn opt_add(self, key: impl Into<String>, opt: Validator) -> Self
pub fn opt_add(self, key: impl Into<String>, opt: Validator) -> Self
Add a new validator to the opt map.
Sourcepub fn keys(self, keys: StrValidator) -> Self
pub fn keys(self, keys: StrValidator) -> Self
Set the Key Validator.
Sourcepub fn in_add(self, add: impl Into<BTreeMap<String, Value>>) -> Self
pub fn in_add(self, add: impl Into<BTreeMap<String, Value>>) -> Self
Add a value to the in list.
Sourcepub fn nin_add(self, add: impl Into<BTreeMap<String, Value>>) -> Self
pub fn nin_add(self, add: impl Into<BTreeMap<String, Value>>) -> Self
Add a value to the nin list.
Sourcepub fn same_len_add(self, add: impl Into<String>) -> Self
pub fn same_len_add(self, add: impl Into<String>) -> Self
Add a key to the same_len list.
Sourcepub fn query(self, query: bool) -> Self
pub fn query(self, query: bool) -> Self
Set whether or not queries can use the in and nin lists.
Sourcepub fn size(self, size: bool) -> Self
pub fn size(self, size: bool) -> Self
Set whether or not queries can use the max_len and min_len values.
Sourcepub fn map_ok(self, map_ok: bool) -> Self
pub fn map_ok(self, map_ok: bool) -> Self
Set whether or not queries can use the req, opt, ban, and values values.
Sourcepub fn same_len_ok(self, same_len_ok: bool) -> Self
pub fn same_len_ok(self, same_len_ok: bool) -> Self
Set whether or not queries can use the same_len value.
Trait Implementations§
Source§impl Clone for MapValidator
impl Clone for MapValidator
Source§fn clone(&self) -> MapValidator
fn clone(&self) -> MapValidator
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more