qryxip / cargo-equip

A Cargo subcommand to bundle your code into one `.rs` file for competitive programming
Apache License 2.0
77 stars 10 forks source link

Expand procedural macros with `rust-analyzer(.exe)` #82

Closed qryxip closed 3 years ago

qryxip commented 3 years ago

そういえばRAはどうやってproc-macroを扱っているのかと思い調べたら、プロセス間でJSONのRPCをする方法を取っていた。(RAのarchitecture.md) 例えばListMacroは次のようにして呼び出せる。

❯ echo '{"ListMacro":{"lib":"../../target/debug/deps/libfastout-2dbcc333cc21dae5.so"}}' | rust-analyzer proc-macro
{"ListMacro":{"macros":[["fastout","Attr"]]}}

ExpansionMacroについてもproc-macro2から上手くJSONにシリアライズすればいけるはず。これでwattを要求しなくてもよくなる。