#config-file #ilo #disk #serialization #serde #ilo-config-home

ilo-config

简单、易用的方式维护磁盘上的配置库

3 个不稳定版本

0.2.1 2024年5月3日
0.2.0 2024年5月3日
0.1.0 2024年4月7日

#180 in 配置

MIT 许可证

16KB
127

ilo-config

简单、易用的方式维护磁盘上的配置库。

快速入门

  1. 创建一个新的 Cargo 二进制包。

    cargo new ilo-config-example && cd ilo-config-example
    
  2. 安装依赖项。 serdereqwest 仅在示例代码中需要;它们不是使用库所必需的。

    cargo add ilo-config
    
    cargo add serde -F derive
    cargo add reqwest -F blocking
    
  3. 将示例代码粘贴到 src/main.rs

    use ilo_config::Config;
    use serde::{Deserialize, Serialize};
    
    #[derive(Debug, Serialize, Deserialize, Default)]
    struct QuickstartConfig {
        /// URL to which a GET request should be made
        url: Option<String>,
    
        /// Additional text to be saved in the config, e.g. reminder of how the file got created
        comment: Option<String>,
    }
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let mut config: Config<QuickstartConfig> = Config::load("example-config")?;
        let data = config.data_mut();
        if data.comment.is_none() {
            data.comment = Some(String::from(
                "Created by the ilo-config package's quickstart example.",
            ));
        }
    
        let url: &str = data
            .url
            .get_or_insert_with(|| String::from("https://httpbin.org/get"));
        let response = reqwest::blocking::get(url)?;
        let text = response.text()?;
    
        println!("Response from configured URL: {text}");
    
        config.save().map_err(|e| e.into())
    }
    
  4. 运行 export ILO_CONFIG_HOME=$(pwd) 以在当前目录而不是默认目录(即 ~/.config/ilo)中创建配置文件。

  5. 使用 cargo run 运行示例。

  6. (可选) 检查生成的 example-config.json 文件。尝试更改 URL 为,例如,https://httpbin.org/headers 并重新运行程序,或者将 URL 替换为数字并验证类型不匹配是否导致运行时错误。

有关更多示例,请参阅 examples/ 目录。

依赖项

~0.8–8.5MB
~69K SLoC