Input: rust crate
In memory "output": I want something higher level than tokenstream/syn. I want, for every variable, it's Type. What crates do I need to get this info ?
Thanks!
Input: rust crate
In memory "output": I want something higher level than tokenstream/syn. I want, for every variable, it's Type. What crates do I need to get this info ?
Thanks!
You can't reliably get it in something like a proc macro because type checking happens after that.[1] If you want it to be more than a guess, you need something like THIR, which happens after any type of macro system.[2]
There's no way a macro system can figure out the type of x
in something like
let x = foreign_function(17);
(It can't even figure out which integer type the argument is.)
I'm not writing a macro. I am goofing around with indexing Rust code / custom tools for searching Rust code, where I really really really do want the type info of variables.
Is there something less "heavy" than adding the Rust compiler as a dependency ?
Use Rust Analyser as a library. It has the benefit of being the second kid on the block so it's easier to hook into, plus it's not tied to a specific version of the nightly compiler and the maintainers are very conscious of the project's build times.
Its also going to be well suited to these sorts of queries because they are the bread and butter of code assists (the little thing).