use proc_macro::TokenStream;
use quote::quote;
#[proc_macro_attribute]
pub fn array_tuple_syntax(_attr: TokenStream, item: TokenStream) -> TokenStream {
item
}
#[proc_macro]
pub fn hash_map_fn(input: TokenStream) -> TokenStream {
let input_str = input.to_string();
let parts: Vec<&str> = input_str.split(',').collect();
let mut tuple_pairs = Vec::new();
for part in parts {
let trimmed = part.trim();
if let Some(arrow_pos) = trimmed.find(" => ") {
let key = trimmed[..arrow_pos].trim();
let value = trimmed[arrow_pos + 4..].trim();
tuple_pairs.push(format!("({}, {})", key, value));
} else if let Some(arrow_pos) = trimmed.find("=>") {
let key = trimmed[..arrow_pos].trim();
let value = trimmed[arrow_pos + 2..].trim();
tuple_pairs.push(format!("({}, {})", key, value));
}
}
let tuple_str = tuple_pairs.join(", ");
let parsed_tokens: proc_macro2::TokenStream = tuple_str.parse().unwrap_or_default();
quote! {
|| {
<::hashbrown::HashMap::<_, _> as ::core::iter::FromIterator<_>>::from_iter([
#parsed_tokens
])
}
}
.into()
}