展开描述
一个支持宏作者定义新宏的库。
这个库由标准分发提供,为过程宏定义(如函数式宏 #[proc_macro]
、宏属性 #[proc_macro_attribute]
和自定义派生属性 #[proc_macro_derive]
)的接口中使用的类型提供了支持。
更多信息请参见此书。
模块§
- token_
stream TokenStream
类型的公开实现细节,例如迭代器。- tracked_
env 实验性 - 跟踪访问环境变量。
- tracked_
path 实验性 - 跟踪访问附加文件。
宏§
- quote
实验性 quote!(..)
接受任意 Token 并展开为描述输入的TokenStream
。例如,quote!(a + b)
将生成一个表达式,该表达式在求值时将构建TokenStream
[Ident("a"), Punct('+', Alone), Ident("b")]
。
结构体§
- Group
- 一个带分隔符的 TokenStream。
- Ident
- 一个标识符 (
ident
)。 - LexError
- 从
TokenStream::from_str
返回的错误。 - Literal
- 一个字符串字面量 (
"hello"
)、字节字符串 (b"hello"
)、C 字符串 (c"hello"
)、字符 ('a'
)、字节字符 (b'a'
)、一个带或不带后缀的整数或浮点数 (1
,1u8
,2.3
,2.3f32
)。布尔字面量如true
和false
不属于此类,它们是Ident
。 - Punct
- 一个
Punct
是一个单独的标点符号字符,例如+
、-
或#
。 - Span
- 源代码中的一个区域,包含宏展开信息。
- Token
Stream - 此 Crate 提供的主要类型,表示一个抽象的 Token 流,或者更具体地说,是 Token 树的序列。该类型提供了迭代这些 Token 树的接口,反之亦然,也可将多个 Token 树收集到一个流中。
- Diagnostic
实验性 - 一个表示诊断消息及相关子消息的结构体。
- Expand
Error 实验性 - 从
TokenStream::expand_expr
返回的错误。 - Source
File 实验性 - 给定
Span
的源文件。
枚举§
- Delimiter
- 描述 Token 树序列如何被分隔。
- Spacing
- 指示一个
Punct
Token 是否可以与其后的 Token 连接形成一个多字符运算符。 - Token
Tree - 一个单独的 Token 或带分隔符的 Token 树序列 (例如,
[1, (), ..]
)。 - Level
实验性 - 一个表示诊断级别的枚举。
Trait§
函数§
- is_
available - 确定
proc_macro
是否已对当前运行的程序可访问。 - quote
实验性 - 将一个
TokenStream
Quote 成一个TokenStream
。这是quote!()
过程宏的实际实现。 - quote_
span 实验性 - 将一个
Span
Quote 成一个TokenStream
。这用于实现自定义 Quoter。