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.