diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-04-13 21:19:03 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-04-13 21:19:03 +0800 |
| commit | 17cf59fe8220ac5befbbe8333fa0515ab532103d (patch) | |
| tree | c2470e6ecc44a74fc40eef8b5bc36901b9e939c6 /mingling_macros/src/suggest.rs | |
| parent | b4cef6e601777b8c4b18df118689f8ac310fa835 (diff) | |
Remove comp module and add EnumTag derive macro
Diffstat (limited to 'mingling_macros/src/suggest.rs')
| -rw-r--r-- | mingling_macros/src/suggest.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/mingling_macros/src/suggest.rs b/mingling_macros/src/suggest.rs index 7354ff0..d3ab446 100644 --- a/mingling_macros/src/suggest.rs +++ b/mingling_macros/src/suggest.rs @@ -70,3 +70,24 @@ pub fn suggest(input: TokenStream) -> TokenStream { expanded.into() } + +pub fn suggest_enum(input: TokenStream) -> TokenStream { + let enum_type = parse_macro_input!(input as syn::Type); + + let expanded = quote! {{ + let mut enum_suggest = ::mingling::Suggest::new(); + for (name, desc) in <#enum_type>::enums() { + if desc.is_empty() { + enum_suggest.insert(::mingling::SuggestItem::new(name.to_string())); + } else { + enum_suggest.insert(::mingling::SuggestItem::new_with_desc( + name.to_string(), + desc.to_string(), + )); + } + } + enum_suggest + }}; + + expanded.into() +} |
