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
sourceimpl TokenStream
impl TokenStream
1.29.0 · sourcepub fn new() -> TokenStream
pub fn new() -> TokenStream
Returns an empty TokenStream
containing no token trees.
sourcepub fn expand_expr(&self) -> Result<TokenStream, ExpandError>
🔬This is a nightly-only experimental API. (proc_macro_expand
#90765)
pub fn expand_expr(&self) -> Result<TokenStream, ExpandError>
proc_macro_expand
#90765)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
sourceimpl Clone for TokenStream
impl Clone for TokenStream
sourcefn clone(&self) -> TokenStream
fn clone(&self) -> TokenStream
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl Debug for TokenStream
impl Debug for TokenStream
Prints token in a form convenient for debugging.
1.45.0 · sourceimpl Default for TokenStream
impl Default for TokenStream
sourceimpl Display for TokenStream
impl Display for TokenStream
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.
1.30.0 · sourceimpl Extend<TokenStream> for TokenStream
impl Extend<TokenStream> for TokenStream
sourcefn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)
fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)
sourcefn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
#72631)sourcefn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
#72631)1.30.0 · sourceimpl Extend<TokenTree> for TokenStream
impl Extend<TokenTree> for TokenStream
sourcefn extend<I: IntoIterator<Item = TokenTree>>(&mut self, trees: I)
fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, trees: I)
sourcefn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
#72631)sourcefn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
#72631)1.29.0 · sourceimpl From<TokenTree> for TokenStream
impl From<TokenTree> for TokenStream
Creates a token stream containing a single token tree.
sourcefn from(tree: TokenTree) -> TokenStream
fn from(tree: TokenTree) -> TokenStream
sourceimpl FromIterator<TokenStream> for TokenStream
impl FromIterator<TokenStream> for TokenStream
A “flattening” operation on token streams, collects token trees from multiple token streams into a single stream.
sourcefn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self
fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self
1.29.0 · sourceimpl FromIterator<TokenTree> for TokenStream
impl FromIterator<TokenTree> for TokenStream
Collects a number of token trees into a single stream.
sourcefn from_iter<I: IntoIterator<Item = TokenTree>>(trees: I) -> Self
fn from_iter<I: IntoIterator<Item = TokenTree>>(trees: I) -> Self
sourceimpl FromStr for TokenStream
impl FromStr for TokenStream
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.