在另一个板条箱中查找特定proc-macro的所有调用

时间:2020-10-01 23:36:10

标签: rust rust-macros

我有一个build script,我可以通过a lot of information访问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
    },
);

P.S。目前,我是从Cargo.toml的{​​{1}}的自定义部分获取信息的,但它要求我保持[package.metadata]与源保持同步。

P.P.S。我做所有这些“很酷”的事情的原因是broken Re-exporting C symbols for cdylib

0 个答案:

没有答案