1.15.0[][src]Crate proc_macro

A support library for macro authors when defining new macros.

This library, provided by the standard distribution, provides the types consumed in the interfaces of procedurally defined macro definitions such as function-like macros #[proc_macro], macro attribures #[proc_macro_attribute] and custom derive attributes#[proc_macro_derive].

Note that this crate is intentionally bare-bones currently. This functionality is intended to be expanded over time as more surface area for macro authors is stabilized.

See the book for more.

Modules

token_stream

Public implementation details for the TokenStream type, such as iterators.

Macros

quote [
Experimental
]

quote!(..) accepts arbitrary tokens and expands into a TokenStream describing the input. For example, quote!(a + b) will produce a expression, that, when evaluated, constructs the TokenStream [Ident("a"), Punct('+', Alone), Ident("b")].

Structs

Group

A delimited token stream.

Ident

An identifier (ident).

LexError

Error returned from TokenStream::from_str.

Literal

A literal string ("hello"), byte string (b"hello"), character ('a'), byte character (b'a'), an integer or floating point number with or without a suffix (1, 1u8, 2.3, 2.3f32). Boolean literals like true and false do not belong here, they are Idents.

Punct

An Punct is an single punctuation character like +, - or #.

Span

A region of source code, along with macro expansion information.

TokenStream

The main type provided by this crate, representing an abstract stream of tokens, or, more specifically, a sequence of token trees. The type provide interfaces for iterating over those token trees and, conversely, collecting a number of token trees into one stream.

Diagnostic [
Experimental
]

A structure representing a diagnostic message and associated children messages.

LineColumn [
Experimental
]

A line-column pair representing the start or end of a Span.

SourceFile [
Experimental
]

The source file of a given Span.

Enums

Delimiter

Describes how a sequence of token trees is delimited.

Spacing

Whether an Punct is followed immediately by another Punct or followed by another token or whitespace.

TokenTree

A single token or a delimited sequence of token trees (e.g. [1, (), ..]).

Level [
Experimental
]

An enum representing a diagnostic level.

Functions

quote [
Experimental
]

Quote a TokenStream into a TokenStream. This is the actual quote!() proc macro.

quote_span [
Experimental
]

Quote a Span into a TokenStream. This is needed to implement a custom quoter.