summaryrefslogtreecommitdiff
path: root/varihappy-macros/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'varihappy-macros/src/lib.rs')
-rw-r--r--varihappy-macros/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/varihappy-macros/src/lib.rs b/varihappy-macros/src/lib.rs
new file mode 100644
index 0000000..561962c
--- /dev/null
+++ b/varihappy-macros/src/lib.rs
@@ -0,0 +1,15 @@
+use proc_macro::{Ident, Span, TokenStream, TokenTree};
+
+#[proc_macro]
+pub fn concat_idents(input: TokenStream) -> TokenStream {
+ let mut buffer = String::new();
+ for token in input {
+ if let TokenTree::Ident(identifier) = token {
+ buffer.push_str(&identifier.to_string());
+ }
+ }
+
+ let mut stream = TokenStream::new();
+ stream.extend([Ident::new(&buffer, Span::call_site())]);
+ stream
+}