Skip to content

Instantly share code, notes, and snippets.

@fecetrulo
Created November 4, 2020 19:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fecetrulo/e3cf5b13fed61e498f6c77843f72317a to your computer and use it in GitHub Desktop.
Save fecetrulo/e3cf5b13fed61e498f6c77843f72317a to your computer and use it in GitHub Desktop.
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
macro_rules! _macro {
(
$(#[$outer_derive:meta])*
$outer:ident {
$($(#[$inner_derive:meta])*
$inner:ident {
$( $(#[$field_attribute:meta])*
$field:ident : $ty:ty),*
})*
}
) => {
$(
$(#[$inner_derive])*
pub struct $inner {
$(
$(#[$field_attribute])*
pub $field: $ty
),*
}
)*
$(#[$outer_derive])*
pub enum $outer {
$(
$inner($inner)
),*
}
}
}
_macro!(
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
Test {
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
TestInner {}
}
);
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
pub enum Test2 {
TestInner2(TestInner2),
}
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
pub struct TestInner2 {}
fn main() {
println!("{:?}", TestInner {});
println!("{:?}", TestInner2 {});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment