Skip to content

Latest commit

 

History

History
20 lines (16 loc) · 1.09 KB

配置.md

File metadata and controls

20 lines (16 loc) · 1.09 KB

minilocal和miniserver在启动时除了可以单独指定某项配置外,还应当允许用户指定配置文件。目前流行的配置文件格式有很多,例如:YAML、TOML、JSON等。这里我们钦点JSON作为配置文件的格式。

在RUST中最常用的JSON解析库是serde_json。我们将server和local的配置分别定义成如下两个struct。

#[derive(Serialize, Deserialize, Debug)]
pub struct LocalConfig {
    pub host: Option<String>,
    pub port: Option<u16>,
    pub server: Option<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ServerConfig {
    pub host: Option<String>,
    pub port: Option<u16>,
}

使用Option是为了允许配置项缺省。接着我们需要分别为这两个struct实现Default trait,以及load_from_file方法。程序配置的配置读取逻辑时,如果用户指定了配置文件,将尝试从配置文件中读取配置,读取失败,程序报错并离开。若用户没有指定配置文件,则使用默认配置。最后读取命令行中单独指定的配置项,覆盖配置文件中对应的配置项。