Skip to main content

shirabe_core/
config.rs

1use serde::Deserialize;
2
3#[derive(Debug, Clone, Deserialize)]
4pub struct BasicConfig {
5    pub log_level: String,
6    pub ignore_self_message: bool,
7    pub prefix: Vec<String>,
8}
9
10#[cfg(test)]
11mod test {
12    use crate::config::BasicConfig;
13    use serde::Deserialize;
14
15    use config::{Config, File, FileFormat};
16
17    #[derive(Debug, Deserialize)]
18    #[allow(dead_code)]
19    struct AppConfig {
20        basic: BasicConfig,
21    }
22
23    #[test]
24    fn test_config_load() -> Result<(), Box<dyn std::error::Error>> {
25        let config = Config::builder()
26            .add_source(File::new("config", FileFormat::Toml)) // 从 "config.toml" 文件加载
27            .build()?
28            .try_deserialize::<AppConfig>(); // 尝试反序列化为 AppConfig 结构体
29        println!("{:?}", config);
30        assert!(config.is_ok());
31
32        Ok(())
33    }
34}