From 9c26e89b24a0d0e7c77c19c2cf9f70271f86345c Mon Sep 17 00:00:00 2001 From: Sashanoraa Date: Sun, 23 Mar 2025 19:25:04 -0400 Subject: [PATCH] Modify config load to use serde default This commit refactors the config loading code to no longer require a separate ConfigFile struct by taking advantage of serde's `default` attribute. This causes serde to use the Config struct's default value for that attribute for any missing attributes, which is what the existing code was doing anyway. This also fixes several clippy warnings. Serde docs: https://serde.rs/container-attrs.html#default --- bin/src/config.rs | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/bin/src/config.rs b/bin/src/config.rs index 354cf66..fd0c49c 100644 --- a/bin/src/config.rs +++ b/bin/src/config.rs @@ -2,17 +2,9 @@ use crate::error::RayhunterError; use serde::Deserialize; -#[derive(Deserialize)] -struct ConfigFile { - qmdl_store_path: Option, - port: Option, - debug_mode: Option, - ui_level: Option, - enable_dummy_analyzer: Option, - colorblind_mode: Option, -} - #[derive(Debug)] +#[derive(Deserialize)] +#[serde(default)] pub struct Config { pub qmdl_store_path: String, pub port: u16, @@ -36,18 +28,11 @@ impl Default for Config { } pub fn parse_config

(path: P) -> Result where P: AsRef { - let mut config = Config::default(); if let Ok(config_file) = std::fs::read_to_string(&path) { - let parsed_config: ConfigFile = toml::from_str(&config_file) - .map_err(RayhunterError::ConfigFileParsingError)?; - parsed_config.qmdl_store_path.map(|v| config.qmdl_store_path = v); - parsed_config.port.map(|v| config.port = v); - parsed_config.debug_mode.map(|v| config.debug_mode = v); - parsed_config.ui_level.map(|v| config.ui_level = v); - parsed_config.enable_dummy_analyzer.map(|v| config.enable_dummy_analyzer = v); - parsed_config.colorblind_mode.map(|v| config.colorblind_mode = v); + Ok(toml::from_str(&config_file).map_err(RayhunterError::ConfigFileParsingError)?) + } else { + Ok(Config::default()) } - Ok(config) } pub struct Args {