penguin_app/config/
app_config.rs

1use penguin_config::*;
2use crate::config::logger_config::{LoggerConfig, LoggerConfigDeserializable};
3use crate::config::window_config::WindowConfig;
4
5
6#[derive(Debug, Clone)]
7pub struct AppConfig {
8    pub logger_config: LoggerConfig,
9    pub window_config: WindowConfig,
10}
11impl From<AppConfigDeserializable> for AppConfig {
12    fn from(x: AppConfigDeserializable) -> Self {
13        AppConfig {
14            logger_config: x.logger_config.into(),
15            window_config: x.window_config,
16        }
17    }
18}
19impl PenguinConfig for AppConfig {
20    fn read_config() -> Self {
21        let config = AppConfigDeserializable::read_config();
22        let config: AppConfig = config.into();
23        config
24    }
25}
26
27
28#[derive(Debug, Deserialize, PenguinConfigFile)]
29#[penguin_config(path = "app-config.json")]
30pub struct AppConfigDeserializable {
31    pub logger_config: LoggerConfigDeserializable,
32    pub window_config: WindowConfig,
33}