macro_rules! easy_argument_value {
    (
        $(#[$meta:meta])*
        $vis:vis struct $name:ident {
            $(#[$nmeta:meta])* $nvis:vis $nname:ident: $ntype:ty,
            $(#[$vmeta:meta])* $vvis:vis $vname:ident: $vtype:ty
            $(,)?
        }
    ) => { ... };
    (
        $(#[$meta:meta])*
        $vis:vis struct $name:ident {
            $(#[$nmeta:meta])* $nvis:vis $nname:ident: $ntype:ty,
            $(#[$vmeta:meta])* ? $vvis:vis $vname:ident: $vtype:ty
            $(,)?
        }
    ) => { ... };
    (
        $(#[$meta:meta])*
        $vis:vis struct $name:ident (
            $(#[$nmeta:meta])* $nvis:vis $ntype:ty,
            $(#[$vmeta:meta])* $vvis:vis $vtype:ty
            $(,)?
        );
    ) => { ... };
    (
        $(#[$meta:meta])*
        $vis:vis struct $name:ident (
            $(#[$nmeta:meta])* $nvis:vis $nname:ident: $ntype:ty,
            $(#[$vmeta:meta])* ? $vvis:vis $vname:ident: $vtype:ty
            $(,)?
        );
    ) => { ... };
}
Expand description

Defines argument structure of two fields. First field is a argument name. It must be EasyToken implementation that will be used to for EasyPeek implementation. Second field must be EasyArgumentField and is expected to follow = token. If name is not followed by =, second field is missing. In case of errors, argument name and span will be used.