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
  1. Пытается загрузить файл .env
  2. Читает настройки в структуру 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§