Expand description
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
§Parsing a string to a struct using serde
use serde::Deserialize;
use hocon::Error;
#[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 = hocon::de::from_str(s)?;
§Reading from a string and getting value directly
use hocon::{HoconLoader,Error};
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,Error};
#[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,Error};
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,Error};
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,Error};
#[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()?;Modules§
- de
- Deserializer methods using serde
Structs§
- Hocon
Loader - 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.