pub struct TokenStream(/* private fields */);
展开描述
此 crate 提供的主要类型,表示 token 的抽象流,或者更具体地说,是 token 树的序列。此类型提供了用于迭代这些 token 树的接口,反之,也提供了将多个 token 树收集到一个流中的接口。
这是 #[proc_macro]
、#[proc_macro_attribute]
和 #[proc_macro_derive]
定义的输入和输出。
实现§
源码§impl TokenStream
impl TokenStream
1.29.0 · 源码pub fn new() -> TokenStream
pub fn new() -> TokenStream
返回一个不包含任何 token 树的空 TokenStream
。
源码pub fn expand_expr(&self) -> Result<TokenStream, ExpandError>
🔬这是一个仅限 nightly 版本的实验性 API。(proc_macro_expand
#90765)
pub fn expand_expr(&self) -> Result<TokenStream, ExpandError>
proc_macro_expand
#90765)将此 TokenStream
解析为表达式,并尝试展开其中的任何宏。返回展开后的 TokenStream
。
目前,只有展开为字面量的表达式才会成功,尽管未来可能会放宽此限制。
注意:在错误情况下,expand_expr
可能会保持宏未展开、报告错误、导致编译失败和/或返回 Err(..)
。任何错误情况的具体行为,以及哪些情况被认为是错误,都是未指定的,并且将来可能会更改。
Trait 实现§
1.15.0 · 源码§impl Clone for TokenStream
impl Clone for TokenStream
源码§fn clone(&self) -> TokenStream
fn clone(&self) -> TokenStream
1.0.0 · 源码§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
的复制赋值。 阅读更多1.15.0 · 源码§impl Debug for TokenStream
以方便调试的形式打印 token。
impl Debug for TokenStream
以方便调试的形式打印 token。
1.15.0 · 源码§impl Display for TokenStream
将 token 流打印为字符串,该字符串应该可以无损地转换回相同的 token 流(模跨度),但可能 TokenTree::Group
与 Delimiter::None
分隔符和负数数字字面量除外。
impl Display for TokenStream
将 token 流打印为字符串,该字符串应该可以无损地转换回相同的 token 流(模跨度),但可能 TokenTree::Group
与 Delimiter::None
分隔符和负数数字字面量除外。
注意:输出的确切形式可能会更改,例如,token 之间使用的空格可能会发生变化。因此,您不应对输出字符串(由 to_string
生成)执行任何类型的简单子字符串匹配来实现 proc 宏,因为如果发生此类更改,该匹配可能会停止工作。相反,您应该在 TokenTree
级别工作,例如,匹配 TokenTree::Ident
、TokenTree::Punct
或 TokenTree::Literal
。
1.30.0 · 源码§impl Extend<TokenStream> for TokenStream
impl Extend<TokenStream> for TokenStream
源码§fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)
fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)
1.30.0 · 源码§impl Extend<TokenTree> for TokenStream
impl Extend<TokenTree> for TokenStream
1.29.0 · 源码§impl From<TokenTree> for TokenStream
创建一个包含单个 token 树的 token 流。
impl From<TokenTree> for TokenStream
创建一个包含单个 token 树的 token 流。
源码§fn from(tree: TokenTree) -> TokenStream
fn from(tree: TokenTree) -> TokenStream
1.15.0 · 源码§impl FromIterator<TokenStream> for TokenStream
token 流上的“展平”操作,从多个 token 流中收集 token 树到一个流中。
impl FromIterator<TokenStream> for TokenStream
token 流上的“展平”操作,从多个 token 流中收集 token 树到一个流中。
源码§fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self
fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self
1.29.0 · 源码§impl FromIterator<TokenTree> for TokenStream
将多个 token 树收集到一个流中。
impl FromIterator<TokenTree> for TokenStream
将多个 token 树收集到一个流中。
1.15.0 · 源码§impl FromStr for TokenStream
尝试将字符串分解为 token,并将这些 token 解析为 token 流。可能会因多种原因失败,例如,如果字符串包含不平衡的分隔符或语言中不存在的字符。解析流中的所有 token 都获得 Span::call_site()
span。
impl FromStr for TokenStream
尝试将字符串分解为 token,并将这些 token 解析为 token 流。可能会因多种原因失败,例如,如果字符串包含不平衡的分隔符或语言中不存在的字符。解析流中的所有 token 都获得 Span::call_site()
span。
注意:某些错误可能会导致 panic 而不是返回 LexError
。我们保留稍后将这些错误更改为 LexError
的权利。
1.29.0 · 源码§impl IntoIterator for TokenStream
impl IntoIterator for TokenStream
源码§impl ToTokens for TokenStream
impl ToTokens for TokenStream
源码§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
proc_macro_totokens
#130977)源码§fn into_token_stream(self) -> TokenStream
fn into_token_stream(self) -> TokenStream
proc_macro_totokens
#130977)源码§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
proc_macro_totokens
#130977)