upvote
Side note: There's an effort to cache proc macro invocations so that they get executed only once if the item they annotate hasn't changed: https://github.com/rust-lang/rust/pull/129102

There are multiple caveats on providing this to users (we can't assume that macro invocations are idempotent, so the new behavior would have to be opt in, and this only benefits incremental compilation), but it's in our radar.

reply
That is something I never have to care on my C++ projects, because I always make use of binary libraries, unless I am forced to compile from source.

Unfortunately that doesn't seem to ever be a scenario cargo will support out of the box.

reply
The actual reason that you don't have to care about this on your C++ project is because C++ doesn't let you define macros in C++, you can only define them in the preprocessor language. Therefore no compilation is needed to execute them.
reply
I never write macros in C++, other than header guards, for years now.

I belong to the school of thought that C style macros in C++ should be nuked.

Exception being source code I don't own.

reply