macro_rules! shared_library {
($struct_name : ident, pub $($rest : tt) +) => { ... };
($struct_name : ident, fn $($rest : tt) +) => { ... };
($struct_name : ident, static $($rest : tt) +) => { ... };
($struct_name : ident, $def_path : expr, $($rest : tt) +) => { ... };
(__impl $struct_name : ident [$($p1 : tt) *] [$($p2 : tt) *] [$($p3 : tt) *],
$($rest : tt) *) => { ... };
(__impl $struct_name : ident [$($p1 : tt) *] [$($p2 : tt) *] [$($p3 : tt) *]
pub $($rest : tt) *) => { ... };
(__impl $struct_name : ident [$($p1 : tt) *] [$($p2 : tt) *] [$($p3 : tt) *]
fn $name : ident($($p : ident : $ty : ty), *) -> $ret : ty, $($rest : tt) *) => { ... };
(__impl $struct_name : ident [$($p1 : tt) *] [$($p2 : tt) *] [$($p3 : tt) *]
static $name : ident : $ty : ty, $($rest : tt) *) => { ... };
(__impl $struct_name : ident [$($p1 : tt) *] [$($p2 : tt) *] [$($p3 : tt) *]
fn $name : ident($($p : ident : $ty : ty), *), $($rest : tt) *) => { ... };
(__impl $struct_name : ident [$(, $mem_n : ident : $mem_t : ty) +]
[$($p2 : tt) *] [$($p3 : tt) *]) => { ... };
(__write_static_fns $struct_name : ident [$($p1 : tt) *] [] [$($p3 : tt) *]) => { ... };
(__write_static_fns $struct_name : ident [$($p1 : tt) *] [$defpath : expr]
[$($standalones : item) +]) => { ... };
}