[−][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 |