Skip to main content

define_enum_scan

Macro define_enum_scan 

Source
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] },
  }
}