I believe this is mostly due to the switch to LLVM 13[1].
[1]: https://twitter.com/ryan_levick/status/1443202538099073027
[1]: https://twitter.com/ryan_levick/status/1443202538099073027
Rust has had LTO for quite a while, and it's normally a source of longer compilation times rather than shorter ones (since LTO in LLVM-world involves mashing all of the bitcode together and (re-)running a lot of expensive analyses to further optimize across translation unit boundaries.
OTOH they've been making continuous improvements to the incremental compilation mode since 1.51/2, so that's probably among the sources of improvements here.