Skip to content
Rust Search
← Browse conferences

Powerful Macros, Good IDE Support, No Headaches. Choose Two.

EuroRust
25:27 2453 views

Macros are complicated, not only for the developers authoring them but also for the IDEs analyzing them. So how does rust-analyzer, a Rust IDE, actually handle them in a way such that features like completions and usage searching work transparently? In this talk we will explore the mechanism in rust-analyzer that enables these features, the current struggles with it and how both the IDE and library authors can improve the macro IDE experience.

Player unavailable or embedding blocked? Use the YouTube link above.

Other talks by Lukas Wirth

One Language, Two IDE Engines

RustNL
RustWeek 39:59 637 views

One Language, Two IDE Engines by Lukas Wirth and Vlad Beskrovny. The speakers ran out of time during this talk slot. and recorded the full talk on a livestream here: https://www.youtube.com/watch?v=VbdD1c3owKc What makes an IDE different from a compiler — and why does Rust stretch that distinction to its limits? This talk explores what it means for an IDE to “understand” Rust code, and why features like name resolution, type inference, and powerful macros make that understanding so complex. We’ll trace the evolution of Rust IDE support — from matklad’s and others' early work on IntelliJ Rust plugin and RLS into modern rust-analyzer and RustRover — and highlight how ideas, people, and approaches have crossed between the two ecosystems (including a few traces like the legendary “intellijrulez”). We’ll then examine the architectural foundations behind these tools. rust-analyzer combines the roles of LSP server and query-based computational engine, designed for interactive, incremental analysis. RustRover builds on the IntelliJ PSI framework, layering its own system of code insight and type reasoning. Comparing how both engines handle project models, name resolution, macro expansion, type inference, and trait solving reveals two distinct but converging philosophies of IDE design — and points toward the next frontier: bringing MIR-level analysis and borrow checking into the editor itself. About Lukas Wirth (he/him): I have been working on rust-analyzer since late 2020, leading the team since the end of 2022. I'm currently a Rust Engineer at Zed Industries. I have co-authored the Ferrocene Language Specification and I am maintaining an updated fork of the The Little Book of Rust Macros. - git: https://github.com/Veykril - bluesky: https://bsky.app/profile/lukaswirth.dev - linkedin: https://www.linkedin.com/in/lukas-tobias-wirth/ About Vlad Beskrovny (he/him): Rust since 2014. Joined the JetBrains Rust plugin team in 2017 and helped turn it into RustRover - a dedicated Rust IDE released in 2024. Still building RustRover, focused on code analysis and improving the IDE experience for Rust developers. - git: https://github.com/vlad20012 This talk was given at RustWeek 2026 as part of the Compiler track on Tuesday 19 May. You can find a playlist of all talks in this track at https://www.youtube.com/playlist?list=PL8Q1w7Ff68DAAvGHe77-pRAPdUfgC0P6b, and a playlist of all RustWeek 2026 talks at https://www.youtube.com/playlist?list=PL8Q1w7Ff68DBpmF38rcIAf8Z9Gj2TnlgM For information about RustWeek 2027, go to https://2027.rustweek.org. We hope to see you there!

An Incrementally Spicier rust-analyzer

RustNL
RustWeek 37:45 1643 views

David Barsky & Lukas Wirth -- rust-analyzer recently migrated to a new version of its incremental computation library, Salsa. This has yielded both major and minor performance wins in rust-analyzer. In this talk, we’ll discuss the challenges (self-referential interning! a 5x memory usage regression!), benefits (parallel autocomplete, persistent caches, and near-instant crate graph additions/removals) of new Salsa. We’ll also discuss how Salsa works internally and how you can use it in your own projects.