Crates.io | hocon |
lib.rs | hocon |
version | 0.9.0 |
source | src |
created_at | 2019-02-03 23:34:53.008169 |
updated_at | 2022-04-25 23:22:37.14163 |
description | Reads HOCON configuration files |
homepage | https://github.com/mockersf/hocon.rs |
repository | https://github.com/mockersf/hocon.rs |
max_upload_size | |
id | 112508 |
size | 269,753 |
The API docs for the master branch are published here.
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
. strict
mode can be enabled to return the
first Error
encountered instead.
use serde::Deserialize;
#[derive(Deserialize)]
struct Configuration {
host: String,
port: u8,
auto_connect: bool,
}
fn main() -> Result<(), Error> {
let s = r#"{
host: 127.0.0.1
port: 80
auto_connect: false
}"#;
let conf: Configuration = hocon::de::from_str(s)?;
Ok(())
}
use hocon::HoconLoader;
fn main() -> Result<(), 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));
Ok(())
}
serde
use serde::Deserialize;
use hocon::HoconLoader;
#[derive(Deserialize)]
struct Configuration {
host: String,
port: u8,
auto_connect: bool,
}
fn main() -> Result<(), Error> {
let s = r#"{
host: 127.0.0.1
port: 80
auto_connect: false
}"#;
let conf: Configuration = HoconLoader::new()
.load_str(s)?
.resolve()?;
Ok(())
}
use hocon::HoconLoader;
fn main() -> Result<(), Error> {
let doc = HoconLoader::new()
.load_file("tests/data/basic.conf")?
.hocon()?;
let a = doc["a"].as_i64();
assert_eq!(a, Some(5));
Ok(())
}
use hocon::HoconLoader;
fn main() -> Result<(), 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")));
Ok(())
}
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,
}
# fn main() -> Result<(), Error> {
let s = r#"{host: 127.0.0.1, port: 80, auto_connect: false}"#;
# #[cfg(feature = "serde-support")]
let conf: Configuration = HoconLoader::new().load_str(s)?.resolve()?;
# Ok(())
# }
https://github.com/lightbend/config/blob/master/HOCON.md