Macro rand_derive::Rand [] [src]

macro_rules! Rand {
    (
        () $($tail:tt)*
    ) => { ... };
    (
        @item
        enum {
            attrs: $_attrs:tt,
            vis: $_vis:tt,
            name: $name:ident,
            generics: {
                constr: [$($constr:tt)*],
                params: [$($params:tt)*],
                ltimes: $_ltimes:tt,
                tnames: [$($tnames:ident,)*],
            },
            where: {
                clause: $_clause:tt,
                preds: [$($preds:tt)*],
            },
            variants: [
                $({
                    ord: ($ord:expr, $_ord:tt),
                    attrs: [$($_vattrs:tt)*],
                    kind: $vkind:ident,
                    name: $vname:ident,
                    fields: $vfields:tt,
                    num_fields: $vnum_fields:expr,
                },)+  // + because 0 variants is explicitly unsupported
            ],
            num_variants: $num_variants:expr,
            $($_enum_tail:tt)*
        }
    ) => { ... };
    (@isone [$_one:tt] $e:expr, $_f:expr) => { ... };
    (@isone [$($_notone:tt)*] $_e:expr, $f:expr) => { ... };
    (@enum unitary $rng:ident $name:ident $vname:ident $vfields:tt) => { ... };
    (@enum tuple $rng:ident $name:ident $vname:ident
     [$($vfield:tt,)*]
    ) => { ... };
    (@enum record $rng:ident $name:ident $vname:ident
     [$({
         ord: $_ford:tt,
         attrs: $_fattrs:tt,
         vis: $_fvis:tt,
         ty: $_fty:ty,
         name: $fname:ident,
      },)*]
    ) => { ... };
    (
        @item
        struct {
            attrs: $_attrs:tt,
            vis: $_vis:tt,
            name: $name:ident,
            generics: {
                constr: [$($constr:tt)*],
                params: [$($params:tt)*],
                ltimes: $_ltimes:tt,
                tnames: [$($tnames:ident,)*],
            },
            where: {
                clause: $_clause:tt,
                preds: [$($preds:tt)*],
            },
            kind: $kind:ident,
            fields: $fields:tt,
            $($_struct_tail:tt)*
        }
    ) => { ... };
    (@struct unitary $rng:ident $name:ident $vfields:tt) => { ... };
    (@struct tuple $rng:ident $name:ident
     [$($vfield:tt,)*]
    ) => { ... };
    (@struct record $rng:ident $name:ident
     [$({
         ord: $_ford:tt,
         attrs: $_fattrs:tt,
         vis: $_fvis:tt,
         ty: $_fty:ty,
         name: $fname:ident,
      },)*]
    ) => { ... };
    (@substitute $_input:tt $output:expr) => { ... };
    (@as_item $i:item) => { ... };
}

Implementation of derive(Rand!) for macro_attr!{}.