macro_rules! _opts {
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : bool $(,$par:ident : $what:expr)*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : bool = false;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : bool = false, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : bool = true;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : bool = true, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Vec<$typ:ty> $(,$par:ident : $what:expr)*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Vec<$typ:ty> = $val:expr;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Vec<$typ:ty> = $val:expr, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Option<$typ:ty> $(,$par:ident : $what:expr)*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Option<$typ:ty> = $val:expr;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : Option<$typ:ty> = $val:expr, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : $typ:ty;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : $typ:ty, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : $typ:ty = $val:expr;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
opt $var:ident : $typ:ty = $val:expr, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : Vec<$typ:ty> $(,$par:ident : $what:expr)*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : Option<$typ:ty> $(,$par:ident : $what:expr)*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : $typ:ty;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : $typ:ty, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : $typ:ty = $val:expr;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
param $var:ident : $typ:ty = $val:expr, $($par:ident : $what:expr),*;
$($rest:tt)* ) => { ... };
( ($($_sets:tt)*) ($($_opts:tt)*) ($($_params:tt)*)
$which:ident $($what:expr),*;
$($rest:tt)* ) => { ... };
( NegFlag , $var:expr ) => { ... };
( Flag , $var:expr ) => { ... };
( Optional, $var:expr ) => { ... };
( Multi, $var:expr ) => { ... };
( SingleRequired, $var:expr ) => { ... };
( Single, $var:expr ) => { ... };
( Required, SingleRequired ) => { ... };
( Required, $kind:ident ) => { ... };
( Negate, NegFlag ) => { ... };
( Negate, $kind:ident ) => { ... };
( ($([$_sname:ident, $($_sarg:expr),*])*)
($([$_okind:ident, $_oelmtyp:ty, $_ovar:ident : $_otyp:ty = $_oval:expr, $($_opar:ident : $_owhat:expr),*])*)
($([$_pkind:ident, $_pelmtyp:ty, $_pvar:ident : $_ptyp:ty = $_pval:expr, $($_ppar:ident : $_pwhat:expr),*])*) ) => { ... };
}