macro_rules! define_function {
    (
        $registry:expr
        =>
        $(mod $module_name:ident)?
        $(struct ($struct_type:ty))?
        fn
        $name:ident
        ($( $input_name:ident : $input_type:ty),*)
        ->
        ($( $output_name:ident : $output_type:ty),*)
        $code:block
    ) => { ... };
}