https://rust-analyzer.github.io/blog/2021/11/21/ides-and-mac...
I don't remember experiencing Rust Analyzer crashes for a long time, though (I do remember some in the past).
The declarative macros aren't too head-twisting for tools, they just expand as declared, this can sometimes have a few surprising effects but generally it is very manageable. Procedural macros have essentially unlimited power and thus are sometimes entirely impossible to analyse.
I like, use, and write macros, but this isn't fully true. For example, recent Rust versions allow writing identifiers directly in the format string:
println!("{some_identifier}")
However, this breaks rust-analyzer's ability to rename variables [1].[1]: https://github.com/rust-lang/rust-analyzer/issues/11260#
Mara's whichever_compiles! macro for example: https://github.com/m-ou-se/whichever-compiles -- that macro is forking your compiler to try out all the branches and throwing away branches which caused a compile error.
Clearly your IDE should throw its hands up and say, I don't understand what this does, I give up.
In general doing something useful with Rust macros is a more tractable problem for an IDE than say the C pre-processor, because Rust's macros have a stronger syntax, but the proc macro is potentially much too powerful / dangerous to try to evaluate.