Totally random, but dude, thanks for that link! I was just reading through it and found the section about proc_macros in expression position. That's awesome and something I've seen hold multiple projects on nightly. I didn't know that was out yet.
This is likely to helpe me out in my own projects.
I keep forgetting, can proc macros expand to macro_rules macro definitions now? I think I read that somewhere and have wished for that feature in the past, but can't quickly find it atm.
And it turns out #[proc_macro_derive]s had that ability to emit macro_rules! definitions very early on. This means that any proc-macro could emit a dummy:
which is a valid item for the proc-macro to emit, then the Helper derive could fetch the <proc-macro-output> and define the macro_rules! emit {() => (<proc-macro-output>)} and then the frontend macro_rules! shim could append the emit!() call in expression position.
Yeah, I did know about that and was very glad that the hack existed I just hadn't tried it yet. I was actually planning to eventually try to bring the reql crate off of nightly using that, but never got to it.
It's just nice that now you don't need to have an extra crate and do a little juggle to get it to work.