【问题标题】:Is it possible to initialize a variable from an environment variable at compilation time?是否可以在编译时从环境变量初始化变量?
【发布时间】:2018-07-31 19:32:41
【问题描述】:

我想在编译期间初始化一个变量。比如我想在编译代码的时候将变量VAR初始化为VALUE

match env::var("VAR") {
    Ok(value) => println!("Ok {}", value),
    Err(e) => println!("Error ({})", e),
};

但是,我想在 no_std 上下文中执行此操作,因此我无法使用 std::env 访问环境。可以这样做吗?

【问题讨论】:

    标签: rust compile-time-constant


    【解决方案1】:

    env::var在编译时得到评估:

    从当前进程中获取环境变量键。

    您正在寻找std::env! / core::env!std::option_env! / core::option_env!

    【讨论】:

    • "rustc-env=VAR=VALUE 表示指定的环境变量将被添加到编译器运行的环境中。然后可以通过编译的 crate 中的 env! 宏检索该值." 复制自doc.rust-lang.org/cargo/reference/build-scripts.html。我有点困惑。 “编译器运行的环境”是什么意思?
    • @Dragonight 您引用的内容似乎同意我的观点:env! 宏检索。 “编译器运行的环境”意味着“编译器运行时设置的环境变量”(与“生成的程序运行时”相反)。
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 2011-01-26
    • 2021-04-22
    • 2014-07-26
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多