Module rustc_ast::tokenstream
source · Expand description
Token Streams
TokenStream
s represent syntactic objects before they are converted into ASTs.
A TokenStream
is, roughly speaking, a sequence of TokenTree
s,
which are themselves a single Token
or a Delimited
subsequence of tokens.
Ownership
TokenStream
s are persistent data structures constructed as ropes with reference
counted-children. In general, this means that calling an operation on a TokenStream
(such as slice
) produces an entirely new TokenStream
from the borrowed reference to
the original. This essentially coerces TokenStream
s into “views” of their subparts,
and a borrowed TokenStream
is sufficient to build an owned TokenStream
without taking
ownership of the original.
Structs
An
AttrTokenStream
is similar to a TokenStream
, but with extra
information about the tokens for attribute targets. This is used
during expansion to perform early cfg-expansion, and to process attributes
during proc-macro invocations.Stores the tokens for an attribute target, along
with its attributes.
Owning by-value iterator over a
TokenStream
.By-reference iterator over a
TokenStream
.A lazy version of
TokenStream
, which defers creation
of an actual TokenStream
until it is needed.
Box
is here only to reduce the structure size.A
TokenStream
is an abstract sequence of tokens, organized into TokenTree
s.Enums
Like
TokenTree
, but for AttrTokenStream
.When the main Rust parser encounters a syntax-extension invocation, it
parses the arguments to the invocation as a token tree. This is a very
loose structure, such that all sorts of different AST fragments can
be passed to syntax extensions using a uniform type.