rust-analyzer vs. RustRover: Clash of the Titans
In a Nutshell
rust-analyzer and RustRover both re-implement the Rust compiler's front-end for IDE features, but differ fundamentally in architecture: RustRover uses map-reduce indexing with PSI stubs and eager processing, while rust-analyzer employs a Salsa query system with fine-grained dependency tracking and lazy computation. The core technical challenge is Rust's cyclic module graph, macro expansion complexity, and name resolution requiring fixed-point iteration, forcing both tools to balance eager upfront work with lazy per-request performance. Both systems isolate procedural macros in separate processes for safety, but differ in memory management—RustRover leverages Java heap LRU caching while rust-analyzer uses mark-and-sweep collection for type interning and LRU memoization for query results.
These notes were generated by AI and may contain inaccuracies.
Vitaly Bragilevsky hosts a RustRover livestream discussing Rust analyzer and RustRover internals. The panel includes Lukas Wirth, Rust engineer at Zed and team lead for rust-analyzer, and Vlad Bezborodov, engineer at JetBrains working on RustRover. The livestream serves as an extended version of a talk delivered at Rust Week in Utrecht one week prior, focusing on implementation details rather than direct IDE comparisons.
Lukas Wirth began coding around age 12 in high school, writing Java mods for Minecraft. He started writing Rust in 2016 upon entering university and has accumulated roughly 10 years of Rust experience. Vlad Bezborodov discovered Rust in 2014 during high school but began actively writing it around 2017 when he joined JetBrains to work on the predecessor of RustRover, the IntelliJ Rust plugin.
An IDE integrates multiple development tools including version control, debuggers, and file explorers into a single product. The most notable component is the smart text editor providing features like completion and go-to declaration. In modern Rust development, rust-analyzer and RustRover serve as the two production-ready backends for these smart features.
Rust-analyzer operates across various editors through the LSP protocol, while RustRover maintains its own code analysis engine. Both systems must re-implement approximately half the compiler, specifically the front-end components from parsing through MIR generation.
Sign in to read the full notes
Get access to AI-generated notes, topic timestamps, and more.