[][src]Macro edisp::implement_dispatch

macro_rules! implement_dispatch {
    ($_:ident $( < $( $__:tt ),+ $( , )? > )? $( , )? ) => { ... };
    ($_:ident $( < $( $__:tt),+ $( , )? > )?,
     $___: ident ($____: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty),
     $variant4_name: ident ($variant4_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty),
     $variant4_name: ident ($variant4_it: ty),
     $variant5_name: ident ($variant5_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty),
     $variant4_name: ident ($variant4_it: ty),
     $variant5_name: ident ($variant5_it: ty),
     $variant6_name: ident ($variant6_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty),
     $variant4_name: ident ($variant4_it: ty),
     $variant5_name: ident ($variant5_it: ty),
     $variant6_name: ident ($variant6_it: ty),
     $variant7_name: ident ($variant7_it: ty) $( , )?
    ) => { ... };
    ($enum_name:ident $( < $( $ty_arg:tt ),+ $( , )? > )?,
     $variant1_name: ident ($variant1_it: ty),
     $variant2_name: ident ($variant2_it: ty),
     $variant3_name: ident ($variant3_it: ty),
     $variant4_name: ident ($variant4_it: ty),
     $variant5_name: ident ($variant5_it: ty),
     $variant6_name: ident ($variant6_it: ty),
     $variant7_name: ident ($variant7_it: ty),
     $variant8_name: ident ($variant8_it: ty) $( , )?
    ) => { ... };
}

Implements the dispatch for an enum.

use edisp::prelude::*;

enum MyResult<T, E> {
    MyOk(T),
    MyErr(E)
}

implement_dispatch!(MyResult<T, E>, MyOk(T), MyErr(E));

enum MyEnum {
    Integer(u8),
    Other(char),
}

implement_dispatch!(MyEnum, Integer(u8), Other(char));