INI Configuration Provider

These features are only available if the ini feature is activated

The IniConfigurationProvider supports loading configuration from an *.ini file.

The following code adds several configuration providers, including a couple of *.ini files:

use config::{*, ext::*}; fn main() { let name = std::env::var("ENVIRONMENT").or_else("production"); let config = DefaultConfigurationBuilder::new() .add_ini_file("MyIniConfig.ini".is().optional()) .add_ini_file(format!("MyIniConfig.{}.ini", name).is().optional()) .add_env_vars() .add_command_line() .build() .unwrap(); }

In the preceding code, settings in the MyIniConfig.ini and MyIniConfig.{Environment}.ini files are overridden by settings in the:

  • Environment variables configuration provider
  • Command-line configuration provider

Assume the MyIniConfig.ini file contains:

MyKey="MyIniConfig.ini Value" [Position] Title="My INI Config title" Name="My INI Config name" [Logging:LogLevel] Default=Information App=Warning

The following code displays several of the preceding configurations settings:

let my_key_value = config.get("MyKey").unwrap().as_str(); let title = config.get("Position:Title").unwrap().as_str(); let name = config.section("Position").get("Name").unwrap().as_str(); let default_log_level = config.get("Logging:LogLevel:Default").unwrap().as_str(); println!("MyKey value: {}\n\ Title: {}\n\ Name: {}\n\ Default Log Level: {}", my_key_value, title, name, default_log_level);