rsiot/env_vars/
load_config.rsuse dotenvy::dotenv;
use envy::from_env;
use super::{Errors, IEnvVars};
pub fn load_config<TEnvVars>() -> Result<TEnvVars, Errors>
where
TEnvVars: IEnvVars,
{
println!("Пробуем загрузить переменные из окружения");
let vars = load_from_env();
match vars {
Ok(vars) => {
println!("Переменные из окружения загружены");
return Ok(vars);
}
Err(err) => {
println!("Ошибка загрузки переменных из окружения: {err}");
}
}
println!("Пробуем загрузить переменные из файла .env");
let vars = load_from_file();
match vars {
Ok(vars) => {
println!("Переменные из файла успешно загружены");
Ok(vars)
}
Err(err) => {
println!("Ошибка загрузки переменных из файла .env: {err}");
Err(err)
}
}
}
fn load_from_env<TEnvVars>() -> Result<TEnvVars, Errors>
where
TEnvVars: IEnvVars,
{
let vars = from_env::<TEnvVars>()?;
Ok(vars)
}
fn load_from_file<TEnvVars>() -> Result<TEnvVars, Errors>
where
TEnvVars: IEnvVars,
{
dotenv()?;
let vars = from_env::<TEnvVars>()?;
Ok(vars)
}