macro_rules! codegen_method {
{
{
type: initializer,
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
self: {
ownership: {},
name: $self:tt
},
args: [ $($arg:tt : $argty:ty),* ],
ret: { $($ret:tt)* },
body: $body:block
}
} => { ... };
{
{
type: class_method,
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
self: (),
args: [ $($args:tt)* ],
ret: { $($ret:tt)* },
body: $body:block
}
} => { ... };
{
{
type: instance_method,
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
self: {
ownership: { $($ownership:tt)* },
name: $self:tt
},
args: [ $($args:tt)* ],
ret: { $($ret:tt)* },
body: $body:block
}
} => { ... };
}