use serde::Deserialize; #[derive(Debug, Deserialize, Clone)] pub struct ServerConfig { #[serde(default = "default_server_host")] pub host: String, #[serde(default = "default_server_port")] pub port: u16, #[serde(default = "default_request_timeout_seconds")] pub request_timeout_seconds: u64, #[serde(default = "default_max_body_bytes")] pub max_body_bytes: usize, #[serde(default = "default_concurrency_limit")] pub concurrency_limit: usize, #[serde(default = "default_rate_limit_per_minute")] pub rate_limit_per_minute: u32, #[serde(default = "default_cors_origins")] pub cors_origins: Vec, } fn default_request_timeout_seconds() -> u64 { 30 } fn default_max_body_bytes() -> usize { 1024 * 1024 } fn default_concurrency_limit() -> usize { 256 } fn default_rate_limit_per_minute() -> u32 { 120 } fn default_cors_origins() -> Vec { vec!["http://localhost:3000".to_string()] } fn default_server_host() -> String { "127.0.0.1".to_string() } fn default_server_port() -> u16 { 3000 }