我有一个程序宏板条箱Proc
和二进制板条箱Bin
。Bin
依赖于Proc
. Proc
需要一个填充的环境变量才能正常运行。
build.rs
这是我的 in里面的一些代码Bin
。Proc
使用以下代码时可以成功找到env值:
fn main() {
println!("cargo:rustc-env=SOME_ENV_VALUE=somevalue");
}
但是,在我的 in 中Proc
使用此代码时找不到环境变量(注意:在调用后立即检查存在时,我可以验证密钥是否实际存在):build.rs
Bin
dotenv
fn main() {
dotenv::dotenv().unwrap();
}
这是我的Proc
箱子:
use proc_macro::TokenStream;
#[proc_macro_derive(MyProcMacro)]
pub fn my_proc_macro(input: TokenStream) -> TokenStream {
if std::env::var("SOME_ENV_VALUE").is_err() {
panic!("Failed to retrieve env value")
}
TokenStream::new()
}
为什么它不会因println!
命令而失败?它可以使用dotenv
吗?否则我需要编写一些代码将密钥从我的env
文件复制到println!
命令中......
所有代码都在我的最小复制项目中。