I was wrong about Visual Studio Code.
Not in the particulars, mind you. I'm still an Emacs user. It's still my one and only IDE. But there was something about Visual Studio Code that bugged the hell out of me: on-the-fly syntactic analysis. I hated it. I thought it was a lazy developer's feature, a hand-holding digital assistant who would nitpick the hell out of your work. That was the compiler's job.
A few weeks ago I managed, mostly just out of curiosity, to install the Language Server Protocol engine for Rust, and to get it work under Emacs. It turned out the biggest problem was a breakdown between the PATH as understood by the boot shell and the path understood by my terminal shell. Once I reconciled the two, Everything Worked™. And I've started to appreciate what I was missing. It's not that it helps me with semantics, but that it helps me catch typos and misunderstandings, and since my academic side project involves three different languages that I'm not all that comfortable with (Rust, Haskell, and Racket), it's been a heck of a boon.
I know I'm probably the last programmer on Earth to understand this, but in case I'm not: go ahead and try LSP, FlyCheck, and Company. It'll really make a difference in the code-compile-test cycle.