valico/json_schema/validators/
required.rs
1use serde_json::{Value};
2
3use super::super::errors;
4use super::super::scope;
5
6#[allow(missing_copy_implementations)]
7pub struct Required {
8 pub items: Vec<String>
9}
10
11impl super::Validator for Required {
12 fn validate(&self, val: &Value, path: &str, _scope: &scope::Scope) -> super::ValidationState {
13 let object = nonstrict_process!(val.as_object(), path);
14 let mut state = super::ValidationState::new();
15
16 for key in self.items.iter() {
17 if !object.contains_key(key) {
18 state.errors.push(Box::new(
19 errors::Required {
20 path: [path, key.as_ref()].join("/")
21 }
22 ))
23 }
24 }
25
26 state
27 }
28}