vld/combinators/
describe.rs1use serde_json::Value;
2
3use crate::error::VldError;
4use crate::schema::VldSchema;
5
6pub struct ZDescribe<T: VldSchema> {
12 inner: T,
13 description: String,
14}
15
16impl<T: VldSchema> ZDescribe<T> {
17 pub fn new(inner: T, description: &str) -> Self {
19 Self {
20 inner,
21 description: description.to_string(),
22 }
23 }
24
25 pub fn description(&self) -> &str {
27 &self.description
28 }
29
30 pub fn inner_schema(&self) -> &T {
32 &self.inner
33 }
34}
35
36impl<T: VldSchema> VldSchema for ZDescribe<T> {
37 type Output = T::Output;
38
39 fn parse_value(&self, value: &Value) -> Result<T::Output, VldError> {
40 self.inner.parse_value(value)
41 }
42 fn parse_missing(&self) -> Result<T::Output, VldError> {
43 self.inner.parse_missing()
44 }
45 fn output_json(&self, o: &Self::Output) -> Option<Value> {
46 self.inner.output_json(o)
47 }
48}