macro_rules! define_enum_scan {
(@field_ty @repeat [$($t:tt)*] $($len:expr)?) => { ... };
(@field_ty @array [$($t:tt)*] $len:expr) => { ... };
(@field_ty @tuple [$([$($args:tt)*])*]) => { ... };
(@field_ty @sparen [] ($($tt:tt)*); $($t:tt)*) => { ... };
(@field_ty @sparen [] [$($tt:tt)*]; $($t:tt)*) => { ... };
(@field_ty @sparen [] $ty:ty = $e:expr; $($t:tt)*) => { ... };
(@field_ty @sparen [] $ty:ty; $($t:tt)*) => { ... };
(@field_ty @sparen [] $($args:tt)*) => { ... };
(@field_ty @sparen [$($args:tt)+] const $len:expr) => { ... };
(@field_ty @sparen [$($args:tt)+] $len:expr) => { ... };
(@field_ty @$tag:ident [$($args:tt)*] ($($tuple:tt)*) $($t:tt)*) => { ... };
(@field_ty @$tag:ident [$($args:tt)*] [$($tt:tt)*] $($t:tt)*) => { ... };
(@field_ty @$tag:ident [$($args:tt)*] $ty:ty = $e:expr $(, $($t:tt)*)?) => { ... };
(@field_ty @$tag:ident [$($args:tt)*] $ty:ty $(, $($t:tt)*)?) => { ... };
(@field_ty @$tag:ident [$($args:tt)*] , $($t:tt)*) => { ... };
(@field_ty @$tag:ident [[$($args:tt)*]]) => { ... };
(@field_ty @$tag:ident [$($args:tt)*]) => { ... };
(@field_ty $($t:tt)*) => { ... };
(@tag_expr raw, $iter:ident) => { ... };
(@tag_expr $d:ty, $iter:ident) => { ... };
(@variant ([$($attr:tt)*] $vis:vis $T:ident $d:tt) [$($vars:tt)*]) => { ... };
(@variant $ctx:tt [$($vars:tt)*] $p:pat => $v:ident { $($fs:tt)* } $($rest:tt)*) => { ... };
(@variant $ctx:tt [$($vars:tt)*] $p:pat => $v:ident $($rest:tt)*) => { ... };
(@variant $ctx:tt [$($vars:tt)*] , $($rest:tt)*) => { ... };
(@endfield $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] [$f:ident : $($spec:tt)*] , $($rest:tt)*) => { ... };
(@endfield $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] [$f:ident : $($spec:tt)*] ; $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] ; $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : ($($tuple:tt)*) $sep:tt $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : [$($x:tt)*] $sep:tt $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : $ty:ty = $e:expr , $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : $ty:ty ; $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : $ty:ty = $e:expr ; $($rest:tt)*) => { ... };
(@field $ctx:tt [$($vars:tt)*] $p:pat => $v:ident [$($fs:tt)*] $f:ident : $ty:ty , $($rest:tt)*) => { ... };
(
@def
$(#[$attr:meta])*
$vis:vis enum $T:ident : $d:tt {
$( $p:pat => $v:ident $( { $( [$f:ident : $($spec:tt)*] )* } )?, )*
}
) => { ... };
(
$(#[$attr:meta])*
$vis:vis enum $T:ident : raw {
$($body:tt)*
}
) => { ... };
(
$(#[$attr:meta])*
$vis:vis enum $T:ident : $d:ty {
$($body:tt)*
}
) => { ... };
}Expand description
define enum scan rules
ยงExample
define_enum_scan! {
enum Query: u8 {
0 => Noop,
1 => Args { i: Usize1, s: char },
9 => Complex { n: usize, c: [(usize, Vec<usize> = CharsWithBase('a')); n] },
}
}