Skip to content
Rust Search
← Browse conferences

Proving macro expansion with expandable

EuroRust
21:27 1206 views

Macros are a very powerful Rust feature. They allow developers to quickly and easily build domain-specific languages, with no runtime cost. However, the Rust compiler does surprisingly few checks on macros. For instance, it happily accepts a macro whose expansion is not syntactically valid, which makes them hard to debug. In this talk, we will see how expandable allows to check at compile time that a macro always expands to valid code and give a brief explanation under the hood. Finally, we’l

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

Other talks by Sasha Pourcelot

Parsing Rust Code Considered Harmful

EuroRust
26:54 1262 views

Sasha Pourcelot CS Student, Software Engineer at Trustinsoft Sasha discusses the different static analysis techniques that were used in the development of cargo-breaking. We’ll start with basic Rust code parsers and show that, although being super simple, they require complex manipulations when it comes to import resolution and dependency handling. Then we’ll use the Rust compiler as a library and dive deep in its internal API. While this approach allows us to capture all the subtilities of a Rust crate, we’ll show that it requires just too much maintenance and involves a huge complexity, potentially slowing down the development. Once this is done, we’ll discuss how we can leverage rustdoc in order to extract the API of the crate and get a lot of super useful metadata in the process. This approach allowed us to do great process in the cargo-breaking development, as it allowed us to get all the data we needed while not being too complex to analyze. At the end of the talk, we’ll allow ourselves to dream of the future. We could maybe add a plugin system to rust-analyzer and perform custom analysis in real time, so the diagnosis can be provided to the user after each key press.