Crate hocon_linked[−][src]
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
Deserializer methods using serde
Structs
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.