openapi_type/visitor/
mod.rs1mod never;
2mod openapi;
3
4pub use openapi::{OpenapiSchema, OpenapiVisitor};
5
6mod seal {
7 pub trait Sealed {}
8}
9
10pub trait Visitor: seal::Sealed {
13 type OptionVisitor: Visitor;
14 type ArrayVisitor: Visitor;
15 type ObjectVisitor: ObjectVisitor;
16 type AlternativesVisitor: AlternativesVisitor;
17
18 fn visit_unit(&mut self) {
19 self.visit_unit_struct(None, None);
20 }
21
22 fn visit_unit_struct(&mut self, name: Option<String>, description: Option<String>);
23
24 fn visit_any(&mut self);
25
26 fn visit_bool(&mut self);
27
28 fn visit_int(&mut self, byte: Option<u32>, minimum: Option<i64>);
29
30 fn visit_number(&mut self, byte: Option<u32>);
31
32 fn visit_char(&mut self);
33
34 fn visit_string(&mut self);
35
36 fn visit_uuid(&mut self);
37
38 fn visit_date(&mut self);
39
40 fn visit_datetime(&mut self);
41
42 fn visit_binary(&mut self);
43
44 fn visit_option(&mut self) -> &mut Self::OptionVisitor;
45
46 fn visit_enum<I>(&mut self, name: Option<String>, description: Option<String>, variants: I)
47 where
48 I: IntoIterator<Item = String>;
49
50 fn visit_array(&mut self, len: Option<usize>, unique_items: bool) -> &mut Self::ArrayVisitor;
51
52 fn visit_object(&mut self) -> &mut Self::ObjectVisitor;
53
54 fn visit_alternatives(&mut self) -> &mut Self::AlternativesVisitor;
55}
56
57pub trait ObjectVisitor: seal::Sealed {
58 type FieldVisitor: Visitor;
59 type FlattenVisitor: Visitor;
60 type ValueVisitor: Visitor;
61
62 fn visit_name(&mut self, name: String);
63
64 fn visit_description(&mut self, description: String);
65
66 fn visit_field(&mut self, name: String, doc: Option<String>) -> &mut Self::FieldVisitor;
67
68 fn visit_flatten_field(&mut self) -> &mut Self::FlattenVisitor;
69
70 fn visit_deny_additional(&mut self);
71
72 fn visit_additional(&mut self) -> &mut Self::ValueVisitor;
73}
74
75pub trait AlternativesVisitor: seal::Sealed {
76 type Visitor: Visitor;
77
78 fn visit_name(&mut self, name: String);
79
80 fn visit_description(&mut self, description: String);
81
82 fn visit_alternative(&mut self) -> &mut Self::Visitor;
83}