Metaprogramming in nightly Rust
Until now, we have stayed in stable Rust, since it allows forward compatibility. There are some nightly features, though, that can help us improve our control over the code we generate. Nevertheless, all of them are experimental and they might change or even get removed before being stabilized.
Therefore, you should take into account that using nightly features will probably break your code in the future and it will take more effort to maintain it to be compatible with new Rust versions. Nevertheless, we will have a quick look at two new features that are coming to Rust.
Understanding compiler plugins
The Rust nightly compiler accepts loading extensions, called plugins. They effectively change the way the compiler behaves, so they can modify the language itself. A plugin is a crate, similar to the procedural macro crate we created previously.
The difference between a procedural or standard macro and a plugin is that, while the first two modify the Rust code they...