Я пытаюсь использовать lazy_static ящик для инициализации некоторых статических переменных, которым присвоены значения, путем чтения некоторых переменных среды в build.rs
. То, что я пытаюсь достичь, похоже на этот пост .
Мой код следующий:
lazy_static! {
static _spdk_dir : String = match env::var("SPDK_DIR") {
Ok(val) => val,
Err(_e) => panic!("SPDK_DIR is not defined in the environment")
};
static _dpdk_dir: String = match env::var("DPDK_DIR") {
Ok(val) => val,
Err(_e) => panic!("DPDK_DIR is not defined in the environment")
};
}
После запуска cargo test
компилятор выдаст error: no rules expected the token _spdk_dir
. Я могу избавиться от этой ошибки, добавив ключевое слово ref
после static
но это приведет к другой ошибке при использовании переменной с println!
:
println!("cargo:warning={}", _spdk_dir);
Ошибка _spdk_dir doesn't implement std::fmt::Display
Мне интересно, как я могу решить проблему? Спасибо!