use std::net::Ipv4Addr; use std::path::PathBuf; pub struct AppConfig { pub db_path: PathBuf, pub listen_addr: Ipv4Addr, pub listen_port: u16, } impl Default for AppConfig { fn default() -> Self { let listen_port = if cfg!(debug_assertions) { 12_345 } else { 19_923 }; AppConfig { db_path: get_or_create_db_path(), listen_addr: Ipv4Addr::LOCALHOST, listen_port, } } } fn get_or_create_db_path() -> PathBuf { if cfg!(debug_assertions) { return PathBuf::from("./creddy.db"); } let mut parent = std::env::var("HOME") .map(|h| { let mut p = PathBuf::from(h); p.push(".config"); p }) .unwrap_or(PathBuf::from(".")); parent.push("creddy.db"); parent }