How Rust IDEs Understand Code | The RustRover Blog
Blog post from JetBrains
In a recent RustRover livestream, Rust engineers Lukas Wirth and Vlad Beskrovny explored the intricate workings of Rust IDEs and the challenges they face in understanding Rust code. The discussion delved into the necessity for IDEs to reimplement parts of the Rust compiler to offer features like code completion and semantic highlighting, emphasizing the difference between compilers optimizing for throughput and IDEs for latency. The evolution from RLS to rust-analyzer and RustRover was discussed, highlighting the shift towards architectures that prioritize responsiveness. The complexities of Rust's name resolution and type inference, particularly due to the language's cyclic module graph and procedural macros, were also examined. The livestream revealed how RustRover and rust-analyzer handle large projects differently, with RustRover using PSI-based indexing and rust-analyzer employing a query-driven approach. The session concluded with insights into integrating semantic analysis with debugging and the inherent complexities in Rust tooling development, underscoring both the love and challenges associated with working in the Rust ecosystem.