как поместить путь к базе данных в Rust

#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 скрипт сборки звучит хорошо! Я попробую это сделать! Спасибо за ваш совет.