首页 > 解决方案 > 在另一个 crate 中查找特定“proc-macro”的所有调用

问题描述

我有一个构建脚本,我可以通过cargo_metadata访问关于另一个箱子的大量信息

现在我正在寻找proc-macro在另一个箱子中找到特定的所有调用的方法。

从理论上讲,我可以自己解析另一个箱子的来源,但出于众所周知的原因,我更愿意以任何可能的方式避免它:-)

理想情况下,我正在寻找编译器已经使用的板条箱。或者至少以某种方式使用编译器的输出来收集此类信息的板条箱。

但任何解决方案都会有所帮助!

从我的代码预期来看,理想的解决方案可能看起来如何:

use proc_macro::TokenStream;

use some_cool_crate::macros_lookup;
use some_cool_crate::Macros;

let path_to_another_crates_cargo_toml = "/path/to/another_crate/Cargo.toml";
let macros = Macros {
    name: "my_macro",
    crate: "macro_original_crate",
};

// The thing I'm looking for:
macros_lookup(
    path_to_another_crates_cargo_toml, 
    &macros, 
    |attr: TokenStream, input: TokenStream,| {
        // there I'll do some interesting stuff
    },
);

Cargo.tomlPS 目前我从's 的自定义部分获取信息,[package.metadata]但它需要我Cargo.toml与来源保持同步。

PPS 我做所有“酷”东西的原因被打破了为 cdylib 重新导出 C 符号

标签: rustrust-macros

解决方案


推荐阅读