valico/json_schema/validators/
enum_.rs1use serde_json::Value;
2
3use super::super::errors;
4use super::super::helpers::is_matching;
5use super::super::scope;
6
7#[allow(missing_copy_implementations)]
8pub struct Enum {
9 pub items: Vec<Value>,
10}
11
12impl super::Validator for Enum {
13 fn validate(
14 &self,
15 val: &Value,
16 path: &str,
17 _scope: &scope::Scope,
18 _: &super::ValidationState,
19 ) -> super::ValidationState {
20 let mut state = super::ValidationState::new();
21
22 let mut contains = false;
23 for value in self.items.iter() {
24 if is_matching(val, value) {
25 contains = true;
26 break;
27 }
28 }
29
30 if !contains {
31 state.errors.push(Box::new(errors::Enum {
32 path: path.to_string(),
33 }))
34 }
35
36 state
37 }
38}