#rust
Вопрос:
Я сначала использую:
pub static DB_FILE_NAME: amp;'static str = env!("DB_FILE_NAME");
Это хорошо работает с моим makefile
(я не знаю, хорошо ли использовать makefile
с ржавчиной):
test:
DB_FILE_NAME=/tmp/db.sqlite
cargo run
release-build:
DB_FILE_NAME=/var/server/db.sqlite
cargo build --release
Но rust-analyzer
предупреждает меня. Это действительно расстроило меня:
environment variable `DB_FILE_PATH` not defined
Я знаю, что это правильно, поэтому я пытаюсь поместить переменную в Cargo.toml
или что-то еще, что может помочь мне выбрать другой путь, когда я выбираю другой выбор( debug
или release
). Я пытаюсь искать, но не получаю полезной информации…
Комментарии:
1. То, что вы делаете, просто прекрасно, если оно компилируется.
env!
вызывает ошибку компилятора, если в среде отсутствует переменная. Анализатор ржавчины, вероятно, работаетcargo check
под капотом, а не использует make, поэтому он не видит, что параметрDB_FILE_PATH
установлен. У вас есть варианты либо использовать#[cfg]
и определить несколько статических параметров, либо использовать простой скрипт сборки, устанавливающий переменные.2. Вы можете указать переменные среды в rust-анализаторе
3. Почему вы жестко кодируете путь к БД ? Гораздо лучше сделать его настраиваемым, либо как переменную env во время выполнения , файл конфигурации или параметр приложения.
4. @kmdreko Спасибо! но это зависит от конфигурации редактора…
5. @Aiden4 скрипт сборки звучит хорошо! Я попробую это сделать! Спасибо за ваш совет.