rsiot/env_vars/
load_config.rs1use dotenvy::dotenv;
2use envy::from_env;
3
4use super::{Errors, IEnvVars};
5
6pub fn load_config<TEnvVars>() -> Result<TEnvVars, Errors>
14where
15 TEnvVars: IEnvVars,
16{
17 println!("Пробуем загрузить переменные из окружения");
18 let vars = load_from_env();
19 match vars {
20 Ok(vars) => {
21 println!("Переменные из окружения загружены");
22 return Ok(vars);
23 }
24 Err(err) => {
25 println!("Ошибка загрузки переменных из окружения: {err}");
26 }
27 }
28
29 println!("Пробуем загрузить переменные из файла .env");
30 let vars = load_from_file();
31 match vars {
32 Ok(vars) => {
33 println!("Переменные из файла успешно загружены");
34 Ok(vars)
35 }
36 Err(err) => {
37 println!("Ошибка загрузки переменных из файла .env: {err}");
38 Err(err)
39 }
40 }
41}
42
43fn load_from_env<TEnvVars>() -> Result<TEnvVars, Errors>
45where
46 TEnvVars: IEnvVars,
47{
48 let vars = from_env::<TEnvVars>()?;
49 Ok(vars)
50}
51
52fn load_from_file<TEnvVars>() -> Result<TEnvVars, Errors>
54where
55 TEnvVars: IEnvVars,
56{
57 dotenv()?;
58 let vars = from_env::<TEnvVars>()?;
59 Ok(vars)
60}