macro_rules! codegen_struct {
{ pub: false, rust_name: $rust_name:tt, ruby_name: $ruby_name:tt, struct: () } => { ... };
{ pub: true, rust_name: $rust_name:tt, ruby_name: $ruby_name:tt, struct: () } => { ... };
{ pub: false, rust_name: $rust_name:tt, ruby_name: $ruby_name:tt, struct: { $($rest:tt)* } } => { ... };
{ pub: true, rust_name: $rust_name:tt, ruby_name: $ruby_name:tt, struct: { $($rest:tt)* } } => { ... };
{
pub: { $($pub:tt)* },
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
struct: { $($struct:tt)* }
} => { ... };
}