env!マクロおよびoption_env!マクロは、コンパイル時に環境変数を読み込むマクロ。
(std::envモジュールのvar関数は、実行時に環境変数を読む関数)
env!マクロの戻り値の型は&strで、指定した環境変数が無い場合はコンパイルエラーになる。
option_env!マクロはOption<&str>なので、指定した環境変数が無い場合はNoneになる。
const PATH: &str = env!("PATH"); const ZZZ: Option<&str> = option_env!("ZZZ");
Cargo.tomlに書かれている値の一部は、ビルド時に環境変数に設定されている。
なので、env!マクロを使って読み込むことが出来る。
例えば[package]のversionはCARGO_PKG_VERSIONで取得できる。
fn main() { let version = env!("CARGO_PKG_VERSION"); println!("{}", version); }