Struct toml_config::ConfigFactory [] [src]

pub struct ConfigFactory;

Implements helper functions for loading TOML files into a structure

Examples

To load a file into a Config struct, use ConfigFactory.

Either rustc_serialize or serde can be used for serialization.

 Example using rustc_serialize

extern crate rustc_serialize;
extern crate toml_config;

use rustc_serialize::{Encodable, Decodable};
use std::path::Path;
use toml_config::ConfigFactory;

#[derive(RustcEncodable, RustcDecodable)]
struct Config  {
    nested: NestedConfig
}

// Defaults will be used for missing/invalid configurations in the TOML config file
impl Default for Config {
    fn default() -> Config {
        Config {
            nested: NestedConfig::default()
        }
    }
}

#[derive(RustcEncodable, RustcDecodable)]
struct NestedConfig  {
    value: String,
    values: Vec<u16>
}

impl Default for NestedConfig {
    fn default() -> NestedConfig {
        NestedConfig {
            value: "default".to_owned(),
            values: vec![0, 0, 0]
        }
    }
}

/* config.toml:
 * [nested]
 * value = "test"
 * values = [1, 2, 3]
 */

let config: Config = ConfigFactory::load(Path::new("config.toml"));
assert_eq!(config.nested.value, "test");
assert_eq!(config.nested.values, vec![1, 2, 3]);

Example using serde

extern crate serde;
extern crate toml_config;

use serde::{Serialize, Deserialize};
use std::path::Path;
use toml_config::ConfigFactory;

#[derive(Serialize, Deserialize)]
struct Config  {
    nested: NestedConfig
}

// Defaults will be used for missing/invalid configurations in the TOML config file
impl Default for Config {
    fn default() -> Config {
        Config {
            nested: NestedConfig::default()
        }
    }
}

#[derive(Serialize, Deserialize)]
struct NestedConfig  {
    value: String,
    values: Vec<u16>
}

impl Default for NestedConfig {
    fn default() -> NestedConfig {
        NestedConfig {
            value: "default".to_owned(),
            values: vec![0, 0, 0]
        }
    }
}

/* config.toml:
 * [nested]
 * value = "test"
 * values = [1, 2, 3]
 */

let config: Config = ConfigFactory::load(Path::new("config.toml"));
assert_eq!(config.nested.value, "test");
assert_eq!(config.nested.values, vec![1, 2, 3]);

Methods

impl ConfigFactory
[src]

Loads a TOML file and decodes it into a target structure, using default values for missing or invalid file configurations

Decodes a TOML table into a target structure, using default values for missing or invalid configurations