Macro top_level_tmod_enum

Source
macro_rules! top_level_tmod_enum {
    ($( {$($optinfo:tt)*} ),* $(,)*) => { ... };
    (
        @parse
        {$($variant:tt($substruct_enum:tt))*},
        ($user_value:ident){$($pout:tt)*};
    ) => { ... };
    (
        @parse {$($eout:tt)*}, ($puser_value:ident){$($pout:tt)*};
            [SUBSTRUCT $substruct_enum:ident $variant:ident] |
        $($tail:tt)*
    ) => { ... };
    (
        @parse {$($eout:tt)*}, ($puser_value:ident){$($pout:tt)*};
            [$non_substruct:ident] |
        $($tail:tt)*
    ) => { ... };
}
Expand description

Macro for generating OptionsTargetsModifiers top-level enum with impl. Will generate something like:

pub enum OptionsTargetModifiers {
    CodegenOptions(CodegenOptionsTargetModifiers),
    UnstableOptions(UnstableOptionsTargetModifiers),
}
impl OptionsTargetModifiers {
    pub fn reparse(&self, user_value: &str) -> ExtendedTargetModifierInfo {
        match self {
            Self::CodegenOptions(v) => v.reparse(user_value),
            Self::UnstableOptions(v) => v.reparse(user_value),
        }
    }
    pub fn is_target_modifier(flag_name: &str) -> bool {
        CodegenOptionsTargetModifiers::is_target_modifier(flag_name) ||
        UnstableOptionsTargetModifiers::is_target_modifier(flag_name)
    }
}