【问题标题】:How can I list all implemented traits for a given type during compilation in a macro?如何在宏中编译期间列出给定类型的所有实现特征?
【发布时间】:2018-09-19 06:43:29
【问题描述】:

我正在寻找一种方法来查找在编译期间为给定类型实现的所有特征,以便在宏中使用。

我的用例是我想编写一个宏来创建新类型结构并实现所有内部类型特征,或者至少是其中的一个子集。

【问题讨论】:

标签: rust


【解决方案1】:

你不能。

The Rustc Driver:

[…] 编译器的主要阶段是:

  1. 解析输入:初始 crate 解析
  2. 配置和扩展:解析#[cfg] 属性、名称解析和扩展宏
  3. 运行分析通过:在 crate 上运行特征解析、类型检查、区域检查和其他杂项分析
  4. 转换为 LLVM:转换为 LLVM IR 的内存形式并将其转换为可执行文件/目标文件

(重点是我的)

宏在特征解析完成之前被扩展,所以在你的宏被扩展时,类型信息是未知的。

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多