funkjon

Macro funkjon 

Source
macro_rules! funkjon {
    (
        $ident:ident ::$(<
            $($generic:ident $(: $first_partial:ident
                $(:: $($first_residual:ident $(::)?)*)?
                $( $( +
                    $partial:ident
                    $(:: $($residual:ident $(::)?)*)?
                )+ )?
            )? ),*
        > ::)? $($param:ident),* $block:block
        as ( $($ty:ty),* ) -> Unit
        $(where $($clause_ident:ident :
            $first_clause_partial:ident
            $(:: $($first_clause_residual:ident $(::)?)*)?
            $( $(+
                $clause_partial:ident
                $(:: $($clause_residual:ident $(::)?)*)?
            )+ )?
        ),* $(,)?)?
    ) => { ... };
    (
        $ident:ident ::$(<
            $($generic:ident $(: $first_partial:ident
                $(:: $($first_residual:ident $(::)?)*)?
                $( $( +
                    $partial:ident
                    $(:: $($residual:ident $(::)?)*)?
                )+ )?
            )? ),*
        > ::)? $($param:ident),* $block:block
        as ( $($ty:ty),* ) -> $output:ty
        $(where $($clause_ident:ident :
            $first_clause_partial:ident
            $(:: $($first_clause_residual:ident $(::)?)*)?
            $( $(+
                $clause_partial:ident
                $(:: $($clause_residual:ident $(::)?)*)?
            )+ )?
        ),* $(,)?)?
    ) => { ... };
}