keyword_general

Macro keyword_general 

Source
macro_rules! keyword_general {
    { $kw_var:ident $from_enum:ident $Enum:ident;
      $kw:ident $( $rest:tt )* } => { ... };
    { $kw_var:ident $from_enum:ident $Enum:ident;
      $kw:literal: $constr:ident $( $rest:tt )* } => { ... };
    { $kw_var:ident $from_enum:ident $Enum:ident;
      @ 1 $kw:expr, $constr:ident, $( $ca:tt )? } => { ... };
    { $kw_var:ident $from_enum:ident $Enum:ident;
      @ 1 $kw:expr, $constr:ident, { $( $bindings:tt )* } $ca:tt } => { ... };
    { $kw_var:ident $from_enum:ident $Enum:ident;
      @ 2 $kw:expr, $constr:ident,
      { $( $bindings:tt )* } $( $constr_args:tt )?
    } => { ... };
    { $($x:tt)* } => { ... };
}
Expand description

General-purpose keyword parser

keyword_general!{
    KW_VAR FROM_ENUM ENUM;
    KEYWORD [ {BINDINGS} ] [ CONSTRUCTOR-ARGS ] }

Expands to:

    if KW_VAR = ... {
        BINDINGS
        return FROM_ENUM(ENUM::CONSTRUCTOR CONSTRUCTOR-ARGS)
    }

KEYWORD can be "KEYWORD_STRING": CONSTRUCTOR

CONSTRUCTOR-ARGS, if present, should be in the ( ) or { } as required by the variant’s CONSTRUCTOR.