macro_rules! extern_impl {
{
$(#[espy(
$(debug = $description:literal)?
)])?
$vis:vis fn $this:ident <$host:lifetime> (&self, $argument:ident)
$body:tt
} => { ... };
{
$(#[espy(
// Allows the user to set adebug string to be shown used by the Extern trait.
//
// This is a format string, and the `self` parameter may be bound
// by using square brackets after "debug".
// Using `self` directly will not work because it is not considered in scope of the macro.
$(debug$([$debug_name:ident])? = $description:literal)?
)])?
$vis:vis struct $this:ident {
$($name:ident: $value:expr),* $(,)?
}
} => { ... };
}