blob: c8e9db00100f9a4934e8cc1e2977044deb82bc2f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
use proc_macro::TokenStream;
use quote::quote;
use syn::parse_macro_input;
pub(crate) 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()
}
|