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.