Programmer en Rust, c’est bien. Mais programmer, toujours en Rust, des générateurs de code Rust, exécutés tout juste au moment de la compilation, c’est mieux ! Voilà ce que permettent les macros, avec toujours cette efficacité redoutable à laquelle nous a habitués ce langage.
Impossible de programmer en Rust sans faire un usage massif des macros standard. Depuis panic! et println! jusqu’à debug! en passant par matches!, on en compte pas moins de 44 [LS] ! Cela tient à ce qu’elles constituent un outil puissant, simplifiant considérablement la programmation dans ce langage, offrant des raccourcis bien pratiques. Naturellement, d’autres langages proposent également des macros, à commencer par le C, et il ne s’agit pas ici de faire des comparaisons, mais de découvrir ce qu’elles apportent à Rust et comment se les approprier. Nous allons voir pourquoi et comment développer les siennes.
1. Petit examen d’une macro standard
Pour commencer, le mieux est sans doute d’examiner comment est écrite une de ces fameuses macros standard. Et comme rien ne vaut les basiques, j’ai choisi println!, sans doute la macro la plus utilisée. Voilà ce que cela donne [LN] :
02: ///
03: ///...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première