Struct proc_macro::TokenStream
1.15.0 · source · [−]pub struct TokenStream(_);
Expand description
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.
This is both the input and output of #[proc_macro]
, #[proc_macro_attribute]
and #[proc_macro_derive]
definitions.
Implementations
Returns an empty TokenStream
containing no token trees.
Parses this TokenStream
as an expression and attempts to expand any
macros within it. Returns the expanded TokenStream
.
Currently only expressions expanding to literals will succeed, although this may be relaxed in the future.
NOTE: In error conditions, expand_expr
may leave macros unexpanded,
report an error, failing compilation, and/or return an Err(..)
. The
specific behavior for any error condition, and what conditions are
considered errors, is unspecified and may change in the future.
Trait Implementations
Prints token in a form convenient for debugging.
Prints the token stream as a string that is supposed to be losslessly convertible back
into the same token stream (modulo spans), except for possibly TokenTree::Group
s
with Delimiter::None
delimiters and negative numeric literals.
Creates a token stream containing a single token tree.
Performs the conversion.
A “flattening” operation on token streams, collects token trees from multiple token streams into a single stream.
Creates a value from an iterator. Read more
Attempts to break the string into tokens and parse those tokens into a token stream.
May fail for a number of reasons, for example, if the string contains unbalanced delimiters
or characters not existing in the language.
All tokens in the parsed stream get Span::call_site()
spans.
NOTE: some errors may cause panics instead of returning LexError
. We reserve the right to
change these errors into LexError
s later.