[][src]Module rustc_ap_rustc_ast::tokenstream

Token Streams

TokenStreams represent syntactic objects before they are converted into ASTs. A TokenStream is, roughly speaking, a sequence (eg stream) of TokenTrees, which are themselves a single Token or a Delimited subsequence of tokens.

Ownership

TokenStreams 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 TokenStreams into 'views' of their subparts, and a borrowed TokenStream is sufficient to build an owned TokenStream without taking ownership of the original.

Structs

Cursor

Owning by-value iterator over a TokenStream. FIXME: Many uses of this can be replaced with by-reference iterator to avoid clones.

CursorRef

By-reference iterator over a TokenStream.

DelimSpan
LazyTokenStream

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.

TokenStream

A TokenStream is an abstract sequence of tokens, organized into TokenTrees.

TokenStreamBuilder

Enums

Spacing
TokenTree

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.

Traits

CreateTokenStream

Type Definitions

TreeAndSpacing