macro_rules! external_functions {
(
fn $method_name:ident(&self$(, $method_args:ident: $method_types:ty)* $(,)?) -> $method_output:ty;
$($rest:tt)*
) => { ... };
(
fn $method_name:ident(&self$(, $method_args:ident: $method_types:ty)* $(,)?);
$($rest:tt)*
) => { ... };
(
fn $method_name:ident(&mut self$(, $method_args:ident: $method_types:ty)* $(,)?) -> $method_output:ty;
$($rest:tt)*
) => { ... };
(
fn $method_name:ident(&mut self$(, $method_args:ident: $method_types:ty)* $(,)?);
$($rest:tt)*
) => { ... };
(
fn $method_name:ident(self$(, $method_args:ident: $method_types:ty)* $(,)?) -> $method_output:ty;
$($rest:tt)*
) => { ... };
(
fn $method_name:ident(self$(, $method_args:ident: $method_types:ty)* $(,)?);
$($rest:tt)*
) => { ... };
(
$(#[$meta: meta])*
fn $func_name:ident($($func_args:ident: $func_types:ty),* $(,)?) -> $func_output:ty;
$($rest:tt)*
) => { ... };
(
$(#[$meta: meta])*
fn $func_name:ident($($func_args:ident: $func_types:ty),* $(,)?);
$($rest:tt)*
) => { ... };
() => { ... };
}