Crate proc_macro

1.15.0 · 源代码
展开描述

一个支持宏作者定义新宏的库。

这个库由标准分发提供,为过程宏定义(如函数式宏 #[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)。布尔字面量如 truefalse 不属于此类,它们是 Ident
Punct
一个 Punct 是一个单独的标点符号字符,例如 +-#
Span
源代码中的一个区域,包含宏展开信息。
TokenStream
此 Crate 提供的主要类型,表示一个抽象的 Token 流,或者更具体地说,是 Token 树的序列。该类型提供了迭代这些 Token 树的接口,反之亦然,也可将多个 Token 树收集到一个流中。
Diagnostic实验性
一个表示诊断消息及相关子消息的结构体。
ExpandError实验性
TokenStream::expand_expr 返回的错误。
SourceFile实验性
给定 Span 的源文件。

枚举§

Delimiter
描述 Token 树序列如何被分隔。
Spacing
指示一个 Punct Token 是否可以与其后的 Token 连接形成一个多字符运算符。
TokenTree
一个单独的 Token 或带分隔符的 Token 树序列 (例如,[1, (), ..])。
Level实验性
一个表示诊断级别的枚举。

Trait§

MultiSpan实验性
由可以转换为一组 Span 的类型实现的 Trait。
ToTokens实验性
可以在quote!调用中插入(内插)的类型。

函数§

is_available
确定 proc_macro 是否已对当前运行的程序可访问。
quote实验性
将一个 TokenStream Quote 成一个 TokenStream。这是 quote!() 过程宏的实际实现。
quote_span实验性
将一个 Span Quote 成一个 TokenStream。这用于实现自定义 Quoter。