#[macro_export] macro_rules! external_library { { $name: ident : $link: expr => { $(statics: $($sname: ident: $stype: ty),+; )|* $(functions: $($fname: ident($($farg: ty),*) -> $fret:ty),+; )|* $(varargs: $($vname: ident($($vargs: ty),+) -> $vret: ty),+; )|* } } => { #[link(name=$link)] extern "C" { $($(pub static $sname: $stype;)+)* $($(pub fn $fname($(_: $farg),*) -> $fret;)+)* $($(pub fn $vname($(_: $vargs),+ , ...) -> $vret;)+)* } } }