Crate proc_macro

1.15.0 · Source
展开描述

一个为宏作者在定义新宏时提供的支持库。

这个由标准库提供的库,提供了在过程宏定义接口中使用的类型,例如类函数宏 #[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)。布尔字面量如 truefalse 不属于这里,它们是 Ident
  • 一个 Punct 是一个单独的标点符号,例如 +, -#
  • 源代码的一个区域,以及宏展开信息。
  • 此 crate 提供的核心类型,表示 token 的抽象流,或者更具体地说,是 token 树的序列。此类型提供了迭代这些 token 树的接口,以及相反地,将多个 token 树收集到一个流中的接口。
  • Diagnostic实验性功能
    一个表示诊断消息和关联的子消息的结构体。
  • ExpandError实验性功能
    TokenStream::expand_expr 返回的错误。
  • SourceFile实验性功能
    给定 Span 的源文件。

枚举§

  • 描述 token 树序列是如何分隔的。
  • 指示 Punct token 是否可以与后面的 token 结合以形成多字符运算符。
  • 单个 token 或带分隔符的 token 树序列 (例如, [1, (), ..])。
  • Level实验性功能
    一个表示诊断级别的枚举。

特性§

  • MultiSpan实验性功能
    由可以转换为一组 Span 的类型实现的特性。
  • ToTokens实验性功能
    可以在 quote! 调用中插值的类型。

函数§

  • 确定 proc_macro 是否对当前运行的程序可访问。
  • quote实验性功能
    TokenStream quote 成 TokenStream。这是 quote!() 过程宏的实际实现。
  • quote_span实验性功能
    Span quote 成 TokenStream。这是实现自定义 quoter 所需要的。