#ini #config-parser #parser #configuration

simpleini

SimpleIni is a very simple crate to parse and write with the INI format

3 releases

0.1.2 Sep 19, 2021
0.1.1 Jun 21, 2021
0.1.0 Jun 21, 2021

#2966 in Parser implementations

MIT/Apache

16KB
245 lines

SimpleIni

SimpleIni is a very simple crate to parse and write with the INI format

Licence

SimpleIni is licenced under either the MIT licence, or the Apache-2 licence, at your discretion.

Examples

Parse an INI file

use simpleini::Ini;

fn main() {
    let path = "/tmp/example.ini";
    let ini = match Ini::from_file(path) {
        Ok(ini) => ini,
        Err(e) => {
            eprintln!("Failed to parse /tmp/example.ini: {:?}", e);
            std::process::exit(1);
        }
    };
}

Create a new INI file

use simpleini::{Ini, IniSection};

// These are only needed when using Ini#add_section_with_values
use std::collections::HashMap;
use std::iter::FromIterator;
use std::array::IntoIter;

fn main() {
    let mut ini = Ini::new();
    ini.set("some_global", "VALUE");

    // Manually (and verbosely) create a section
    let mut section = IniSection::new("SectionA");
    section.set("some_section_variable", "OTHER_VALUE");
    ini.add_section(section);

    // Create a Section from a name and a HashMap<AsRef<str>, AsRef<str>>
    ini.add_section_with_values("SectionB", HashMap::from_iter(IntoIter::new([("var_b", "value_b")])));

    // Write the INI file to disk
    match ini.to_file("/tmp/example.ini") {
        Ok(()) => {},
        Err(e) => {
            eprintln!("Failed to write INI to disk: {:?}", e);
            std::process::exit(1);
        }
    };
}

Dependencies

~2–3MB
~54K SLoC