[][src]Crate hocon

HOCON

Parse HOCON configuration files in Rust following the HOCON Specifications.

This implementation goal is to be as permissive as possible, returning a valid document with all errors wrapped in Hocon::BadValue when a correct value cannot be computed. strict mode can be enabled to return the first Error encountered instead.

Examples

Reading from a string and getting value directly

use hocon::HoconLoader;

let s = r#"{ a: 7 }"#;

let doc = HoconLoader::new()
    .load_str(s)?
    .hocon()?;

let a = doc["a"].as_i64();
assert_eq!(a, Some(7));

Deserializing to a struct using serde

use serde::Deserialize;

use hocon::HoconLoader;

#[derive(Deserialize)]
struct Configuration {
    host: String,
    port: u8,
    auto_connect: bool,
}

let s = r#"{
    host: 127.0.0.1
    port: 80
    auto_connect: false
}"#;

let conf: Configuration = HoconLoader::new()
    .load_str(s)?
    .resolve()?;

Reading from a file

Example file: tests/data/basic.conf

use hocon::HoconLoader;

let doc = HoconLoader::new()
    .load_file("tests/data/basic.conf")?
    .hocon()?;

let a = doc["a"].as_i64();
assert_eq!(a, Some(5));

Reading from several documents

Example file: tests/data/basic.conf

use hocon::HoconLoader;

let s = r#"{
    a: will be changed
    unchanged: original value
}"#;

let doc = HoconLoader::new()
    .load_str(s)?
    .load_file("tests/data/basic.conf")?
    .hocon()?;

let a = doc["a"].as_i64();
assert_eq!(a, Some(5));
let unchanged = doc["unchanged"].as_string();
assert_eq!(unchanged, Some(String::from("original value")));

Features

All features are enabled by default. They can be disabled to reduce dependencies.

url-support

This feature enable fetching URLs in includes with include url("http://mydomain.com/myfile.conf") (see spec). If disabled, includes will only load local files specified with include "path/to/file.conf" or include file("path/to/file.conf").

serde-support

This feature enable deserializing to a struct implementing Deserialize using serde

use serde::Deserialize;

use hocon::HoconLoader;

#[derive(Deserialize)]
struct Configuration {
    host: String,
    port: u8,
    auto_connect: bool,
}

let s = r#"{host: 127.0.0.1, port: 80, auto_connect: false}"#;

let conf: Configuration = HoconLoader::new().load_str(s)?.resolve()?;

Structs

HoconLoader

Helper to load an HOCON file. This is used to set up the HOCON loader's option, like strict mode, disabling system environment, and to buffer several documents.

Enums

Error

Errors that can be encountered while reading a HOCON document

Hocon

An HOCON document