Crate rsiot_env_vars
source ·Expand description
Загрузка переменных среды из ОС и из файла .env
Ссылки:
§Команды
§Cоздать / обновить файл .env.example
cargo run --bin env_vars create
Создает файл .env.example
со значениями по-умолчанию
§Проверить файл .env
cargo run --bin env_vars check
- Пытается загрузить файл
.env
- Читает настройки в структуру
src/config.rs
§Пример
use serde::{Deserialize, Serialize};
use url::Url;
use rsiot_env_vars::{load_config, IEnvVars};
/// Структура со всеми переменными
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Config {
pub db_host: String,
pub db_port: u16,
pub db_user: String,
pub db_password: String,
}
/// Задаем настройки по-умолчанию
impl Default for Config {
fn default() -> Self {
Self {
db_host: "localhost".into(),
db_port: 5432,
db_user: "postgres".into(),
db_password: "postgres".into(),
}
}
}
/// Добавляем переменные, которые собираются из заданных в файле
impl Config {
/// Подключение к БД с данными
pub fn db_data_url(&self) -> Url {
let url = format!(
"postgres://{}:{}@{}:{}/db_data",
self.db_user, self.db_password, self.db_host, self.db_port
);
Url::parse(&url).expect("Неправильно заданный адрес БД")
}
}
impl IEnvVars for Config {}
fn main() {
let config = load_config::<Config>();
println!("{:#?}", config);
}
Enums§
Traits§
- Трейт, который должна реализовывать структура конфигурации
Functions§
- Запускаем CLI
- Загрузить настройки