Crate proc_macro2 [] [src]

A "shim crate" intended to multiplex the proc_macro API on to stable Rust.

Procedural macros in Rust operate over the upstream proc_macro::TokenStream type. This type currently is quite conservative and exposed no internal implementation details. Nightly compilers, however, contain a much richer interface. This richer interface allows fine-grained inspection of the token stream which avoids stringification/re-lexing and also preserves span information.

The upcoming APIs added to proc_macro upstream are the foundation for productive procedural macros in the ecosystem. To help prepare the ecosystem for using them this crate serves to both compile on stable and nightly and mirrors the API-to-be. The intention is that procedural macros which switch to use this crate will be trivially able to switch to the upstream proc_macro crate once its API stabilizes.

In the meantime this crate also has a nightly Cargo feature which enables it to reimplement itself with the unstable API of proc_macro. This'll allow immediate usage of the beneficial upstream API, particularly around preserving span information.

Structs

LexError
Literal
Span
Term
TokenStream
TokenTree
TokenTreeIter

Enums

Delimiter
Spacing
TokenNode