cosmwasm_schema/
schema_for.rs1#[macro_export]
20macro_rules! schema_for {
21 ($type:ty) => {{
22 let mut schema = $crate::schemars::gen::SchemaGenerator::new(
23 $crate::schemars::gen::SchemaSettings::draft07(),
24 )
25 .into_root_schema_for::<$type>();
26
27 struct Visitor;
28 impl $crate::schemars::visit::Visitor for Visitor {
29 fn visit_schema_object(&mut self, schema: &mut $crate::schemars::schema::SchemaObject) {
30 $crate::schemars::visit::visit_schema_object(self, schema);
31
32 if let Some(ref mut validation) = schema.object {
33 if validation.additional_properties.is_some() {
34 return;
35 }
36
37 validation.additional_properties = Some(Box::new(false.into()));
38 }
39 }
40 }
41
42 $crate::schemars::visit::visit_root_schema(&mut Visitor, &mut schema);
43
44 schema
45 }};
46 ($_:expr) => {
47 compile_error!("The argument to `schema_for!` is not a type.")
48 };
49}