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