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)
}
}